From 2872af7f939e7e0b089e2cf2a1070c1521123b97 Mon Sep 17 00:00:00 2001 From: Jeongho Nam Date: Sun, 14 Jul 2024 03:15:19 +0900 Subject: [PATCH] Change examples --- examples/keyword/bbs.json | 2061 +- examples/keyword/clickhouse.json | 992 +- examples/keyword/fireblocks.json | 16030 +------- examples/keyword/iamport.json | 6804 +--- examples/keyword/petstore.json | 1288 +- examples/keyword/shopping.json | 50965 +------------------------- examples/keyword/toss.json | 10749 +----- examples/keyword/uber.json | 220 +- examples/positional/bbs.json | 1991 +- examples/positional/clickhouse.json | 852 +- examples/positional/fireblocks.json | 15395 +------- examples/positional/iamport.json | 6709 +--- examples/positional/petstore.json | 1198 +- examples/positional/shopping.json | 50270 +------------------------ examples/positional/toss.json | 10689 +----- examples/positional/uber.json | 195 +- examples/swagger/bbs.json | 84 +- examples/swagger/iamport.json | 5325 +-- examples/swagger/shopping.json | 1317 +- examples/swagger/toss.json | 3419 +- test/example.ts | 28 + 21 files changed, 4005 insertions(+), 182576 deletions(-) create mode 100644 test/example.ts diff --git a/examples/keyword/bbs.json b/examples/keyword/bbs.json index acb14a8..f00366e 100644 --- a/examples/keyword/bbs.json +++ b/examples/keyword/bbs.json @@ -1,2060 +1 @@ -{ - "openapi": "3.0.3", - "functions": [ - { - "method": "post", - "path": "/bbs/articles", - "name": "bbs_articles_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "writer": { - "type": "string" - }, - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - }, - "password": { - "type": "string", - "title": "Password for modification", - "description": "Password for modification." - } - }, - "required": [ - "writer", - "format", - "title", - "body", - "files", - "password" - ], - "description": "Store content type of the article." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "writer": { - "type": "string", - "title": "Writer of article", - "description": "Writer of article." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files", - "title" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "id", - "writer", - "snapshots", - "created_at" - ], - "description": "Article entity.\n\n`IBbsArticle* is a super-type entity of all kinds of articles in the current\nbackend system, literally shaping individual articles of the bulletin board.\n\nAnd, as you can see, the elements that must inevitably exist in the article,\nsuch as the `title` or the `body`, do not exist in the `IBbsArticle`, but exist\nin the subsidiary entity, {@link IBbsArticle.ISnapshot }, as a 1: N relationship,\nwhich is because a new snapshot record is published every time the article is\nmodified.\n\nThe reason why a new snapshot record is published every time the article is\nmodified is to preserve the evidence. Due to the nature of e-community, there\nis always a threat of dispute among the participants. And it can happen that\ndisputes arise through articles or {@link IBbsArticleComment comments}, and to\nprevent such things as modifying existing articles to manipulate the situation,\nthe article is designed in this structure.\n\nIn other words, to keep evidence, and prevent fraud." - }, - "description": "Create a new article.\n\nCreate a new article with its first {@link IBbsArticle.ISnapshot snapshot}." - }, - { - "method": "patch", - "path": "/bbs/articles", - "name": "bbs_articles_patch", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "writer": { - "type": "string" - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - } - }, - "description": "검색 정보." - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-writer", - "-title", - "-created_at", - "-updated_at", - "+writer", - "+title", - "+created_at", - "+updated_at" - ] - }, - "title": "Sort condition", - "description": "Sort condition." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - } - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "writer": { - "type": "string", - "title": "Writer of the article", - "description": "Writer of the article." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "id", - "writer", - "title", - "created_at", - "updated_at" - ], - "description": "Summarized information of the article." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up all summarized articles.\n\nList up all summarized articles with pagination and searching options." - }, - { - "method": "patch", - "path": "/bbs/articles/abridges", - "name": "bbs_articles_abridges_patch", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "writer": { - "type": "string" - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - } - }, - "description": "검색 정보." - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-writer", - "-title", - "-created_at", - "-updated_at", - "+writer", - "+title", - "+created_at", - "+updated_at" - ] - }, - "title": "Sort condition", - "description": "Sort condition." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - } - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "writer": { - "type": "string", - "title": "Writer of the article", - "description": "Writer of the article." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "writer", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "description": "Abriged information of the article." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up all abridged articles.\n\nList up all abridged articles with pagination and searching options." - }, - { - "method": "get", - "path": "/bbs/articles/{id}", - "name": "bbs_articles_getById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "description": "Target article's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "writer": { - "type": "string", - "title": "Writer of article", - "description": "Writer of article." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files", - "title" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "id", - "writer", - "snapshots", - "created_at" - ], - "description": "Article entity.\n\n`IBbsArticle* is a super-type entity of all kinds of articles in the current\nbackend system, literally shaping individual articles of the bulletin board.\n\nAnd, as you can see, the elements that must inevitably exist in the article,\nsuch as the `title` or the `body`, do not exist in the `IBbsArticle`, but exist\nin the subsidiary entity, {@link IBbsArticle.ISnapshot }, as a 1: N relationship,\nwhich is because a new snapshot record is published every time the article is\nmodified.\n\nThe reason why a new snapshot record is published every time the article is\nmodified is to preserve the evidence. Due to the nature of e-community, there\nis always a threat of dispute among the participants. And it can happen that\ndisputes arise through articles or {@link IBbsArticleComment comments}, and to\nprevent such things as modifying existing articles to manipulate the situation,\nthe article is designed in this structure.\n\nIn other words, to keep evidence, and prevent fraud." - }, - "description": "Read individual article.\n\nReads an article with its every {@link IBbsArticle.ISnapshot snapshots}." - }, - { - "method": "put", - "path": "/bbs/articles/{id}", - "name": "bbs_articles_putById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "description": "Target article's " - }, - "body": { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - }, - "password": { - "type": "string", - "title": "Password for modification", - "description": "Password for modification." - } - }, - "required": [ - "format", - "title", - "body", - "files", - "password" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files", - "title" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "description": "Update an article.\n\nAccumulate a new {@link IBbsArticle.ISnapshot snapshot} record to the article." - }, - { - "method": "delete", - "path": "/bbs/articles/{id}", - "name": "bbs_articles_eraseById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "description": "Target article's " - }, - "body": { - "type": "object", - "properties": { - "password": { - "type": "string" - } - }, - "required": [ - "password" - ] - } - } - } - ], - "description": "Erase an article.\n\nPerforms soft deletion to the article." - }, - { - "method": "post", - "path": "/bbs/articles/{articleId}/comments", - "name": "bbs_articles_comments_postByArticleid", - "parameters": [ - { - "type": "object", - "properties": { - "articleId": { - "type": "string", - "format": "uuid", - "description": "Belonged article's " - }, - "body": { - "type": "object", - "properties": { - "writer": { - "type": "string", - "title": "Writer of comment", - "description": "Writer of comment." - }, - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - }, - "password": { - "type": "string", - "title": "Password for modification", - "description": "Password for modification." - } - }, - "required": [ - "writer", - "format", - "body", - "files", - "password" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "writer": { - "type": "string", - "title": "Writer of comment", - "description": "Writer of comment." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "id", - "parent_id", - "writer", - "snapshots", - "created_at" - ], - "description": "Comment written on an article.\n\n`IBbsArticleComment` is an entity that shapes the comments written on an article.\n\nAnd for this comment, as in the previous relationship between\n{@link IBbsArticle } and {@link IBbsArticle.ISnapshot }, the content body of the\ncomment is stored in the sub {@link IBbsArticleComment.ISnapshot } table for\nevidentialism, and a new snapshot record is issued every time the comment is modified.\n\nAlso, `IBbsArticleComment` is expressing the relationship of the hierarchical reply\nstructure through the {@link IBbsArticleComment.parent_id } attribute." - }, - "description": "Create a new comment.\n\nCreate a new comment with its first {@link IBbsArticleComment.ISnapshot snapshot}." - }, - { - "method": "patch", - "path": "/bbs/articles/{articleId}/comments", - "name": "bbs_articles_comments_patchByArticleid", - "parameters": [ - { - "type": "object", - "properties": { - "articleId": { - "type": "string", - "format": "uuid", - "description": "" - }, - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "writer": { - "type": "string" - }, - "body": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-writer", - "-created_at", - "+writer", - "+created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - } - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "writer": { - "type": "string", - "title": "Writer of comment", - "description": "Writer of comment." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "id", - "parent_id", - "writer", - "snapshots", - "created_at" - ], - "description": "Comment written on an article.\n\n`IBbsArticleComment` is an entity that shapes the comments written on an article.\n\nAnd for this comment, as in the previous relationship between\n{@link IBbsArticle } and {@link IBbsArticle.ISnapshot }, the content body of the\ncomment is stored in the sub {@link IBbsArticleComment.ISnapshot } table for\nevidentialism, and a new snapshot record is issued every time the comment is modified.\n\nAlso, `IBbsArticleComment` is expressing the relationship of the hierarchical reply\nstructure through the {@link IBbsArticleComment.parent_id } attribute." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up all summarized comments.\n\nList up all summarized comments with pagination and searching options." - }, - { - "method": "get", - "path": "/bbs/articles/{articleId}/comments/{id}", - "name": "bbs_articles_comments_getByArticleidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "articleId": { - "type": "string", - "format": "uuid", - "description": "Belonged article's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target comment's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "writer": { - "type": "string", - "title": "Writer of comment", - "description": "Writer of comment." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "id", - "parent_id", - "writer", - "snapshots", - "created_at" - ], - "description": "Comment written on an article.\n\n`IBbsArticleComment` is an entity that shapes the comments written on an article.\n\nAnd for this comment, as in the previous relationship between\n{@link IBbsArticle } and {@link IBbsArticle.ISnapshot }, the content body of the\ncomment is stored in the sub {@link IBbsArticleComment.ISnapshot } table for\nevidentialism, and a new snapshot record is issued every time the comment is modified.\n\nAlso, `IBbsArticleComment` is expressing the relationship of the hierarchical reply\nstructure through the {@link IBbsArticleComment.parent_id } attribute." - }, - "description": "Read individual comment.\n\nReads a comment with its every {@link IBbsArticleComment.ISnapshot snapshots}." - }, - { - "method": "put", - "path": "/bbs/articles/{articleId}/comments/{id}", - "name": "bbs_articles_comments_putByArticleidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "articleId": { - "type": "string", - "format": "uuid", - "description": "Belonged article's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target comment's " - }, - "body": { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - }, - "password": { - "type": "string", - "title": "Password for modification", - "description": "Password for modification." - } - }, - "required": [ - "format", - "body", - "files", - "password" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "description": "Update a comment.\n\nAccumulate a new {@link IBbsArticleComment.ISnapshot snapshot} record to the comment." - }, - { - "method": "delete", - "path": "/bbs/articles/{articleId}/comments/{id}", - "name": "bbs_articles_comments_eraseByArticleidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "articleId": { - "type": "string", - "format": "uuid", - "description": "Belonged article's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target comment's " - }, - "body": { - "type": "object", - "properties": { - "password": { - "type": "string" - } - }, - "required": [ - "password" - ] - } - } - } - ], - "description": "Erase a comment.\n\nPerforms soft deletion to the comment." - }, - { - "method": "get", - "path": "/monitors/health", - "name": "monitors_health_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "description": "Health check API." - }, - { - "method": "get", - "path": "/monitors/performance", - "name": "monitors_performance_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "object", - "properties": { - "cpu": { - "type": "object", - "properties": { - "user": { - "type": "number" - }, - "system": { - "type": "number" - } - }, - "required": [ - "user", - "system" - ] - }, - "memory": { - "type": "object", - "properties": { - "rss": { - "type": "number" - }, - "heapTotal": { - "type": "number" - }, - "heapUsed": { - "type": "number" - }, - "external": { - "type": "number" - }, - "arrayBuffers": { - "type": "number" - } - }, - "required": [ - "rss", - "heapTotal", - "heapUsed", - "external", - "arrayBuffers" - ] - }, - "resource": { - "type": "object", - "properties": { - "fsRead": { - "type": "number" - }, - "fsWrite": { - "type": "number" - }, - "involuntaryContextSwitches": { - "type": "number" - }, - "ipcReceived": { - "type": "number" - }, - "ipcSent": { - "type": "number" - }, - "majorPageFault": { - "type": "number" - }, - "maxRSS": { - "type": "number" - }, - "minorPageFault": { - "type": "number" - }, - "sharedMemorySize": { - "type": "number" - }, - "signalsCount": { - "type": "number" - }, - "swappedOut": { - "type": "number" - }, - "systemCPUTime": { - "type": "number" - }, - "unsharedDataSize": { - "type": "number" - }, - "unsharedStackSize": { - "type": "number" - }, - "userCPUTime": { - "type": "number" - }, - "voluntaryContextSwitches": { - "type": "number" - } - }, - "required": [ - "fsRead", - "fsWrite", - "involuntaryContextSwitches", - "ipcReceived", - "ipcSent", - "majorPageFault", - "maxRSS", - "minorPageFault", - "sharedMemorySize", - "signalsCount", - "swappedOut", - "systemCPUTime", - "unsharedDataSize", - "unsharedStackSize", - "userCPUTime", - "voluntaryContextSwitches" - ] - } - }, - "required": [ - "cpu", - "memory", - "resource" - ] - }, - "description": "Get performance information.\n\nGet perofmration information composed with CPU, memory and resource usage." - }, - { - "method": "get", - "path": "/monitors/system", - "name": "monitors_system_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "object", - "properties": { - "uid": { - "type": "number", - "title": "Random Unique ID", - "description": "Random Unique ID." - }, - "arguments": { - "type": "array", - "items": { - "type": "string" - }, - "description": "`process.argv`" - }, - "commit": { - "type": "object", - "properties": { - "shortHash": { - "type": "string" - }, - "branch": { - "type": "string" - }, - "hash": { - "type": "string" - }, - "subject": { - "type": "string" - }, - "sanitizedSubject": { - "type": "string" - }, - "body": { - "type": "string" - }, - "author": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "email": { - "type": "string" - } - }, - "required": [ - "name", - "email" - ], - "description": "Git user account info." - }, - "committer": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "email": { - "type": "string" - } - }, - "required": [ - "name", - "email" - ], - "description": "Git user account info." - }, - "authored_at": { - "type": "string" - }, - "commited_at": { - "type": "string" - }, - "notes": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "shortHash", - "branch", - "hash", - "subject", - "sanitizedSubject", - "body", - "author", - "committer", - "authored_at", - "commited_at", - "tags" - ], - "description": "Git commit info." - }, - "package": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "string" - }, - "description": { - "type": "string" - }, - "main": { - "type": "string" - }, - "typings": { - "type": "string" - }, - "scripts": { - "type": "object", - "properties": {}, - "description": "Construct a type with a set of properties K of type T", - "additionalProperties": { - "type": "string" - } - }, - "repository": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "git" - ] - }, - "url": { - "type": "string" - } - }, - "required": [ - "type", - "url" - ] - }, - "author": { - "type": "string" - }, - "license": { - "type": "string" - }, - "bugs": { - "type": "object", - "properties": { - "url": { - "type": "string" - } - }, - "required": [ - "url" - ] - }, - "homepage": { - "type": "string" - }, - "devDependencies": { - "type": "object", - "properties": {}, - "description": "Construct a type with a set of properties K of type T", - "additionalProperties": { - "type": "string" - } - }, - "dependencies": { - "type": "object", - "properties": {}, - "description": "Construct a type with a set of properties K of type T", - "additionalProperties": { - "type": "string" - } - }, - "publishConfig": { - "type": "object", - "properties": { - "registry": { - "type": "string" - } - }, - "required": [ - "registry" - ] - }, - "files": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "name", - "version", - "description", - "scripts", - "repository", - "author", - "license", - "bugs", - "homepage", - "dependencies" - ], - "description": "NPM package info." - }, - "created_at": { - "type": "string", - "title": "Creation time of this server", - "description": "Creation time of this server." - } - }, - "required": [ - "uid", - "arguments", - "commit", - "package", - "created_at" - ], - "description": "System Information." - }, - "description": "Get system information.\n\nGet system information with commit and package information." - } - ], - "errors": [], - "options": { - "keyword": true, - "separate": null - } -} \ No newline at end of file +{"openapi":"3.0.3","functions":[{"method":"post","path":"/bbs/articles","name":"bbs_articles_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"writer":{"type":"string"},"format":{"type":"string","enum":["txt","md","html"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."},"password":{"type":"string","title":"Password for modification","description":"Password for modification."}},"required":["writer","format","title","body","files","password"],"description":"Store content type of the article."}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"writer":{"type":"string","title":"Writer of article","description":"Writer of article."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["txt","md","html"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["id","writer","snapshots","created_at"],"description":"Article entity.\n\n`IBbsArticle* is a super-type entity of all kinds of articles in the current\nbackend system, literally shaping individual articles of the bulletin board.\n\nAnd, as you can see, the elements that must inevitably exist in the article,\nsuch as the `title` or the `body`, do not exist in the `IBbsArticle`, but exist\nin the subsidiary entity, {@link IBbsArticle.ISnapshot}, as a 1: N relationship,\nwhich is because a new snapshot record is published every time the article is\nmodified.\n\nThe reason why a new snapshot record is published every time the article is\nmodified is to preserve the evidence. Due to the nature of e-community, there\nis always a threat of dispute among the participants. And it can happen that\ndisputes arise through articles or {@link IBbsArticleComment comments}, and to\nprevent such things as modifying existing articles to manipulate the situation,\nthe article is designed in this structure.\n\nIn other words, to keep evidence, and prevent fraud."},"description":"Create a new article.\n\nCreate a new article with its first {@link IBbsArticle.ISnapshot snapshot}."},{"method":"patch","path":"/bbs/articles","name":"bbs_articles_patch","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"search":{"type":"object","properties":{"writer":{"type":"string"},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}},"description":"검색 정보."},"sort":{"type":"array","items":{"type":"string","enum":["-writer","-title","-created_at","-updated_at","+writer","+title","+created_at","+updated_at"]},"title":"Sort condition","description":"Sort condition."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}}}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"writer":{"type":"string","title":"Writer of the article","description":"Writer of the article."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["id","writer","title","created_at","updated_at"],"description":"Summarized information of the article."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up all summarized articles.\n\nList up all summarized articles with pagination and searching options."},{"method":"patch","path":"/bbs/articles/abridges","name":"bbs_articles_abridges_patch","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"search":{"type":"object","properties":{"writer":{"type":"string"},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}},"description":"검색 정보."},"sort":{"type":"array","items":{"type":"string","enum":["-writer","-title","-created_at","-updated_at","+writer","+title","+created_at","+updated_at"]},"title":"Sort condition","description":"Sort condition."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}}}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"writer":{"type":"string","title":"Writer of the article","description":"Writer of the article."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["txt","md","html"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","writer","title","created_at","updated_at","format","body","files"],"description":"Abriged information of the article."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up all abridged articles.\n\nList up all abridged articles with pagination and searching options."},{"method":"get","path":"/bbs/articles/{id}","name":"bbs_articles_getById","parameters":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":" Target article's {@link IBbsArticle.id}"}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"writer":{"type":"string","title":"Writer of article","description":"Writer of article."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["txt","md","html"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["id","writer","snapshots","created_at"],"description":"Article entity.\n\n`IBbsArticle* is a super-type entity of all kinds of articles in the current\nbackend system, literally shaping individual articles of the bulletin board.\n\nAnd, as you can see, the elements that must inevitably exist in the article,\nsuch as the `title` or the `body`, do not exist in the `IBbsArticle`, but exist\nin the subsidiary entity, {@link IBbsArticle.ISnapshot}, as a 1: N relationship,\nwhich is because a new snapshot record is published every time the article is\nmodified.\n\nThe reason why a new snapshot record is published every time the article is\nmodified is to preserve the evidence. Due to the nature of e-community, there\nis always a threat of dispute among the participants. And it can happen that\ndisputes arise through articles or {@link IBbsArticleComment comments}, and to\nprevent such things as modifying existing articles to manipulate the situation,\nthe article is designed in this structure.\n\nIn other words, to keep evidence, and prevent fraud."},"description":"Read individual article.\n\nReads an article with its every {@link IBbsArticle.ISnapshot snapshots}."},{"method":"put","path":"/bbs/articles/{id}","name":"bbs_articles_putById","parameters":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":" Target article's {@link IBbsArticle.id}"},"body":{"type":"object","properties":{"format":{"type":"string","enum":["txt","md","html"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."},"password":{"type":"string","title":"Password for modification","description":"Password for modification."}},"required":["format","title","body","files","password"]}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["txt","md","html"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"description":"Update an article.\n\nAccumulate a new {@link IBbsArticle.ISnapshot snapshot} record to the article."},{"method":"delete","path":"/bbs/articles/{id}","name":"bbs_articles_eraseById","parameters":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":" Target article's {@link IBbsArticle.id}"},"body":{"type":"object","properties":{"password":{"type":"string"}},"required":["password"]}}}],"description":"Erase an article.\n\nPerforms soft deletion to the article."},{"method":"post","path":"/bbs/articles/{articleId}/comments","name":"bbs_articles_comments_postByArticleid","parameters":[{"type":"object","properties":{"articleId":{"type":"string","format":"uuid","description":" Belonged article's {@link IBbsArticle.id }"},"body":{"type":"object","properties":{"writer":{"type":"string","title":"Writer of comment","description":"Writer of comment."},"format":{"type":"string","enum":["txt","md","html"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."},"password":{"type":"string","title":"Password for modification","description":"Password for modification."}},"required":["writer","format","body","files","password"]}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"writer":{"type":"string","title":"Writer of comment","description":"Writer of comment."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["txt","md","html"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["id","parent_id","writer","snapshots","created_at"],"description":"Comment written on an article.\n\n`IBbsArticleComment` is an entity that shapes the comments written on an article.\n\nAnd for this comment, as in the previous relationship between\n{@link IBbsArticle} and {@link IBbsArticle.ISnapshot}, the content body of the\ncomment is stored in the sub {@link IBbsArticleComment.ISnapshot} table for\nevidentialism, and a new snapshot record is issued every time the comment is modified.\n\nAlso, `IBbsArticleComment` is expressing the relationship of the hierarchical reply\nstructure through the {@link IBbsArticleComment.parent_id} attribute."},"description":"Create a new comment.\n\nCreate a new comment with its first {@link IBbsArticleComment.ISnapshot snapshot}."},{"method":"patch","path":"/bbs/articles/{articleId}/comments","name":"bbs_articles_comments_patchByArticleid","parameters":[{"type":"object","properties":{"articleId":{"type":"string","format":"uuid"},"body":{"type":"object","properties":{"search":{"type":"object","properties":{"writer":{"type":"string"},"body":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-writer","-created_at","+writer","+created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}}}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"writer":{"type":"string","title":"Writer of comment","description":"Writer of comment."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["txt","md","html"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["id","parent_id","writer","snapshots","created_at"],"description":"Comment written on an article.\n\n`IBbsArticleComment` is an entity that shapes the comments written on an article.\n\nAnd for this comment, as in the previous relationship between\n{@link IBbsArticle} and {@link IBbsArticle.ISnapshot}, the content body of the\ncomment is stored in the sub {@link IBbsArticleComment.ISnapshot} table for\nevidentialism, and a new snapshot record is issued every time the comment is modified.\n\nAlso, `IBbsArticleComment` is expressing the relationship of the hierarchical reply\nstructure through the {@link IBbsArticleComment.parent_id} attribute."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up all summarized comments.\n\nList up all summarized comments with pagination and searching options."},{"method":"get","path":"/bbs/articles/{articleId}/comments/{id}","name":"bbs_articles_comments_getByArticleidAndId","parameters":[{"type":"object","properties":{"articleId":{"type":"string","format":"uuid","description":" Belonged article's {@link IBbsArticle.id }"},"id":{"type":"string","format":"uuid","description":" Target comment's {@link IBbsArticleComment.id}"}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"writer":{"type":"string","title":"Writer of comment","description":"Writer of comment."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["txt","md","html"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["id","parent_id","writer","snapshots","created_at"],"description":"Comment written on an article.\n\n`IBbsArticleComment` is an entity that shapes the comments written on an article.\n\nAnd for this comment, as in the previous relationship between\n{@link IBbsArticle} and {@link IBbsArticle.ISnapshot}, the content body of the\ncomment is stored in the sub {@link IBbsArticleComment.ISnapshot} table for\nevidentialism, and a new snapshot record is issued every time the comment is modified.\n\nAlso, `IBbsArticleComment` is expressing the relationship of the hierarchical reply\nstructure through the {@link IBbsArticleComment.parent_id} attribute."},"description":"Read individual comment.\n\nReads a comment with its every {@link IBbsArticleComment.ISnapshot snapshots}."},{"method":"put","path":"/bbs/articles/{articleId}/comments/{id}","name":"bbs_articles_comments_putByArticleidAndId","parameters":[{"type":"object","properties":{"articleId":{"type":"string","format":"uuid","description":" Belonged article's {@link IBbsArticle.id }"},"id":{"type":"string","format":"uuid","description":" Target comment's {@link IBbsArticleComment.id}"},"body":{"type":"object","properties":{"format":{"type":"string","enum":["txt","md","html"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"password":{"type":"string","title":"Password for modification","description":"Password for modification."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","password","body","files"]}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["txt","md","html"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"description":"Update a comment.\n\nAccumulate a new {@link IBbsArticleComment.ISnapshot snapshot} record to the comment."},{"method":"delete","path":"/bbs/articles/{articleId}/comments/{id}","name":"bbs_articles_comments_eraseByArticleidAndId","parameters":[{"type":"object","properties":{"articleId":{"type":"string","format":"uuid","description":" Belonged article's {@link IBbsArticle.id }"},"id":{"type":"string","format":"uuid","description":" Target comment's {@link IBbsArticleComment.id}"},"body":{"type":"object","properties":{"password":{"type":"string"}},"required":["password"]}}}],"description":"Erase a comment.\n\nPerforms soft deletion to the comment."},{"method":"get","path":"/monitors/health","name":"monitors_health_get","parameters":[{"type":"object","properties":{}}],"description":"Health check API."},{"method":"get","path":"/monitors/performance","name":"monitors_performance_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"object","properties":{"cpu":{"type":"object","properties":{"user":{"type":"number"},"system":{"type":"number"}},"required":["user","system"]},"memory":{"type":"object","properties":{"rss":{"type":"number"},"heapTotal":{"type":"number"},"heapUsed":{"type":"number"},"external":{"type":"number"},"arrayBuffers":{"type":"number"}},"required":["rss","heapTotal","heapUsed","external","arrayBuffers"]},"resource":{"type":"object","properties":{"fsRead":{"type":"number"},"fsWrite":{"type":"number"},"involuntaryContextSwitches":{"type":"number"},"ipcReceived":{"type":"number"},"ipcSent":{"type":"number"},"majorPageFault":{"type":"number"},"maxRSS":{"type":"number"},"minorPageFault":{"type":"number"},"sharedMemorySize":{"type":"number"},"signalsCount":{"type":"number"},"swappedOut":{"type":"number"},"systemCPUTime":{"type":"number"},"unsharedDataSize":{"type":"number"},"unsharedStackSize":{"type":"number"},"userCPUTime":{"type":"number"},"voluntaryContextSwitches":{"type":"number"}},"required":["fsRead","fsWrite","involuntaryContextSwitches","ipcReceived","ipcSent","majorPageFault","maxRSS","minorPageFault","sharedMemorySize","signalsCount","swappedOut","systemCPUTime","unsharedDataSize","unsharedStackSize","userCPUTime","voluntaryContextSwitches"]}},"required":["cpu","memory","resource"]},"description":"Get performance information.\n\nGet perofmration information composed with CPU, memory and resource usage."},{"method":"get","path":"/monitors/system","name":"monitors_system_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"object","properties":{"uid":{"type":"number","title":"Random Unique ID","description":"Random Unique ID."},"arguments":{"type":"array","items":{"type":"string"},"description":"`process.argv`"},"commit":{"type":"object","properties":{"shortHash":{"type":"string"},"branch":{"type":"string"},"hash":{"type":"string"},"subject":{"type":"string"},"sanitizedSubject":{"type":"string"},"body":{"type":"string"},"author":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"}},"required":["name","email"],"description":"Git user account info."},"committer":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"}},"required":["name","email"],"description":"Git user account info."},"authored_at":{"type":"string"},"commited_at":{"type":"string"},"notes":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}}},"required":["shortHash","branch","hash","subject","sanitizedSubject","body","author","committer","authored_at","commited_at","tags"],"description":"Git commit info."},"package":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"description":{"type":"string"},"main":{"type":"string"},"typings":{"type":"string"},"scripts":{"type":"object","properties":{},"description":"Construct a type with a set of properties K of type T","additionalProperties":{"type":"string"}},"repository":{"type":"object","properties":{"type":{"type":"string","enum":["git"]},"url":{"type":"string"}},"required":["type","url"]},"author":{"type":"string"},"license":{"type":"string"},"bugs":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]},"homepage":{"type":"string"},"devDependencies":{"type":"object","properties":{},"description":"Construct a type with a set of properties K of type T","additionalProperties":{"type":"string"}},"dependencies":{"type":"object","properties":{},"description":"Construct a type with a set of properties K of type T","additionalProperties":{"type":"string"}},"publishConfig":{"type":"object","properties":{"registry":{"type":"string"}},"required":["registry"]},"files":{"type":"array","items":{"type":"string"}}},"required":["name","version","description","scripts","repository","author","license","bugs","homepage","dependencies"],"description":"NPM package info."},"created_at":{"type":"string","title":"Creation time of this server","description":"Creation time of this server."}},"required":["uid","arguments","commit","package","created_at"],"description":"System Information."},"description":"Get system information.\n\nGet system information with commit and package information."}],"errors":[],"options":{"keyword":true,"separate":null}} \ No newline at end of file diff --git a/examples/keyword/clickhouse.json b/examples/keyword/clickhouse.json index e3689f9..0b4736f 100644 --- a/examples/keyword/clickhouse.json +++ b/examples/keyword/clickhouse.json @@ -1,991 +1 @@ -{ - "openapi": "3.0.3", - "functions": [ - { - "method": "get", - "path": "/v1/organizations", - "name": "v1_organizations_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Get list of available organizations.\n\nReturns a list with a single organization associated with the API key in the request." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId", - "name": "v1_organizations_getByOrganizationid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Get organization details.\n\nReturns details of a single organization. In order to get the details, the auth key must belong to the organization." - }, - { - "method": "patch", - "path": "/v1/organizations/:organizationId", - "name": "v1_organizations_patchByOrganizationid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the organization to update." - }, - "body": {} - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Update organization details.\n\nUpdates organization fields. Requires ADMIN auth key role." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/services", - "name": "v1_organizations_services_getByOrganizationid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "List of organization services.\n\nReturns a list of all services in the organization." - }, - { - "method": "post", - "path": "/v1/organizations/:organizationId/services", - "name": "v1_organizations_services_postByOrganizationid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the organization that will own the service." - }, - "body": {} - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Create new service.\n\nCreates a new service in the organization, and returns the current service state and a password to access the service. The service is started asynchronously." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/services/:serviceId", - "name": "v1_organizations_services_getByOrganizationidAndServiceid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the organization that owns the service." - }, - "serviceId": { - "type": "string", - "format": "uuid", - "description": "ID of the requested service." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Get service details.\n\nReturns a service that belongs to the organization" - }, - { - "method": "patch", - "path": "/v1/organizations/:organizationId/services/:serviceId", - "name": "v1_organizations_services_patchByOrganizationidAndServiceid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the organization that owns the service." - }, - "serviceId": { - "type": "string", - "format": "uuid", - "description": "ID of the service to update." - }, - "body": {} - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Update service basic details.\n\nUpdates basic service details like service name or IP access list." - }, - { - "method": "delete", - "path": "/v1/organizations/:organizationId/services/:serviceId", - "name": "v1_organizations_services_eraseByOrganizationidAndServiceid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the organization that owns the service." - }, - "serviceId": { - "type": "string", - "format": "uuid", - "description": "ID of the service to delete." - } - } - } - ], - "description": "Delete service.\n\nDeletes the service. The service must be in stopped state and is deleted asynchronously after this method call." - }, - { - "method": "patch", - "path": "/v1/organizations/:organizationId/services/:serviceId/state", - "name": "v1_organizations_services_state_patchByOrganizationidAndServiceid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the organization that owns the service." - }, - "serviceId": { - "type": "string", - "format": "uuid", - "description": "ID of the service to update state." - }, - "body": {} - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Update service state.\n\nStarts or stop service" - }, - { - "method": "patch", - "path": "/v1/organizations/:organizationId/services/:serviceId/scaling", - "name": "v1_organizations_services_scaling_patchByOrganizationidAndServiceid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the organization that owns the service." - }, - "serviceId": { - "type": "string", - "format": "uuid", - "description": "ID of the service to update scaling parameters." - }, - "body": {} - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Update service auto scaling settings.\n\nUpdates minimum and maximum total memory limits and idle mode scaling behavior for the service. The memory settings are available only for \"production\" services and must be a multiple of 12 starting from 24GB." - }, - { - "method": "patch", - "path": "/v1/organizations/:organizationId/services/:serviceId/password", - "name": "v1_organizations_services_password_patchByOrganizationidAndServiceid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the organization that owns the service." - }, - "serviceId": { - "type": "string", - "format": "uuid", - "description": "ID of the service to update password." - }, - "body": {} - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Update service password.\n\nSets a new password for the service" - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/services/:serviceId/backups", - "name": "v1_organizations_services_backups_getByOrganizationidAndServiceid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the organization that owns the backup." - }, - "serviceId": { - "type": "string", - "format": "uuid", - "description": "ID of the service the backup was created from." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "List of service backups.\n\nReturns a list of all backups for the service." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/services/:serviceId/backups/:backupId", - "name": "v1_organizations_services_backups_getByOrganizationidAndServiceidAndBackupid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the organization that owns the backup." - }, - "serviceId": { - "type": "string", - "format": "uuid", - "description": "ID of the service the backup was created from." - }, - "backupId": { - "type": "string", - "format": "uuid", - "description": "ID of the requested backup." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Get backup details.\n\nReturns a single backup info." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/keys", - "name": "v1_organizations_keys_getByOrganizationid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Get list of all keys.\n\nReturns a list of all keys in the organization." - }, - { - "method": "post", - "path": "/v1/organizations/:organizationId/keys", - "name": "v1_organizations_keys_postByOrganizationid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the organization that will own the key." - }, - "body": {} - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Create key.\n\nCreates new API key." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/keys/:keyId", - "name": "v1_organizations_keys_getByOrganizationidAndKeyid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - }, - "keyId": { - "type": "string", - "format": "uuid", - "description": "ID of the requested key." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Get key details.\n\nReturns a single key details." - }, - { - "method": "patch", - "path": "/v1/organizations/:organizationId/keys/:keyId", - "name": "v1_organizations_keys_patchByOrganizationidAndKeyid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the organization that owns the key." - }, - "keyId": { - "type": "string", - "format": "uuid", - "description": "ID of the key to update." - }, - "body": {} - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Update key.\n\nUpdates API key properties." - }, - { - "method": "delete", - "path": "/v1/organizations/:organizationId/keys/:keyId", - "name": "v1_organizations_keys_eraseByOrganizationidAndKeyid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the organization that owns the key." - }, - "keyId": { - "type": "string", - "format": "uuid", - "description": "ID of the key to delete." - } - } - } - ], - "description": "Delete key.\n\nDeletes API key. Only a key not used to authenticate the active request can be deleted." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/members", - "name": "v1_organizations_members_getByOrganizationid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "List organization members.\n\nReturns a list of all members in the organization." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/members/:userId", - "name": "v1_organizations_members_getByOrganizationidAndUserid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the organization the member is part of." - }, - "userId": { - "type": "string", - "format": "uuid", - "description": "ID of the requested user." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Get member details.\n\nReturns a single organization member details." - }, - { - "method": "patch", - "path": "/v1/organizations/:organizationId/members/:userId", - "name": "v1_organizations_members_patchByOrganizationidAndUserid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the organization the member is part of." - }, - "userId": { - "type": "string", - "format": "uuid", - "description": "ID of the user to patch" - }, - "body": {} - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Update organization member.\n\nUpdates organization member role." - }, - { - "method": "delete", - "path": "/v1/organizations/:organizationId/members/:userId", - "name": "v1_organizations_members_eraseByOrganizationidAndUserid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - }, - "userId": { - "type": "string", - "format": "uuid", - "description": "ID of the requested user." - } - } - } - ], - "description": "Remove an organization member.\n\nRemoves a user from the organization" - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/invitations", - "name": "v1_organizations_invitations_getByOrganizationid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "List all invitations.\n\nReturns list of all organization invitations." - }, - { - "method": "post", - "path": "/v1/organizations/:organizationId/invitations", - "name": "v1_organizations_invitations_postByOrganizationid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the organization to invite a user to." - }, - "body": {} - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Create an invitation.\n\nCreates organization invitation." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/invitations/:invitationId", - "name": "v1_organizations_invitations_getByOrganizationidAndInvitationid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - }, - "invitationId": { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Get invitation details.\n\nReturns details for a single organization invitation." - }, - { - "method": "delete", - "path": "/v1/organizations/:organizationId/invitations/:invitationId", - "name": "v1_organizations_invitations_eraseByOrganizationidAndInvitationid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the organization that has the invitation." - }, - "invitationId": { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - } - } - } - ], - "description": "Delete organization invitation.\n\nDeletes a single organization invitation." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/activities", - "name": "v1_organizations_activities_getByOrganizationid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "List of organization activities.\n\nReturns a list of all organization activities." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/activities/:activityId", - "name": "v1_organizations_activities_getByOrganizationidAndActivityid", - "parameters": [ - { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - }, - "activityId": { - "type": "string", - "description": "ID of the requested activity." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Organization activity.\n\nReturns a single organization activity by ID." - } - ], - "errors": [], - "options": { - "keyword": true, - "separate": null - } -} \ No newline at end of file +{"openapi":"3.0.3","functions":[{"method":"get","path":"/v1/organizations","name":"v1_organizations_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Get list of available organizations.\n\nReturns a list with a single organization associated with the API key in the request."},{"method":"get","path":"/v1/organizations/:organizationId","name":"v1_organizations_getByOrganizationid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the requested organization."}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Get organization details.\n\nReturns details of a single organization. In order to get the details, the auth key must belong to the organization."},{"method":"patch","path":"/v1/organizations/:organizationId","name":"v1_organizations_patchByOrganizationid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the organization to update."},"body":{}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Update organization details.\n\nUpdates organization fields. Requires ADMIN auth key role."},{"method":"get","path":"/v1/organizations/:organizationId/services","name":"v1_organizations_services_getByOrganizationid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the requested organization."}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"List of organization services.\n\nReturns a list of all services in the organization."},{"method":"post","path":"/v1/organizations/:organizationId/services","name":"v1_organizations_services_postByOrganizationid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the organization that will own the service."},"body":{}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Create new service.\n\nCreates a new service in the organization, and returns the current service state and a password to access the service. The service is started asynchronously."},{"method":"get","path":"/v1/organizations/:organizationId/services/:serviceId","name":"v1_organizations_services_getByOrganizationidAndServiceid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the organization that owns the service."},"serviceId":{"type":"string","format":"uuid","description":"ID of the requested service."}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Get service details.\n\nReturns a service that belongs to the organization"},{"method":"patch","path":"/v1/organizations/:organizationId/services/:serviceId","name":"v1_organizations_services_patchByOrganizationidAndServiceid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the organization that owns the service."},"serviceId":{"type":"string","format":"uuid","description":"ID of the service to update."},"body":{}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Update service basic details.\n\nUpdates basic service details like service name or IP access list."},{"method":"delete","path":"/v1/organizations/:organizationId/services/:serviceId","name":"v1_organizations_services_eraseByOrganizationidAndServiceid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the organization that owns the service."},"serviceId":{"type":"string","format":"uuid","description":"ID of the service to delete."}}}],"description":"Delete service.\n\nDeletes the service. The service must be in stopped state and is deleted asynchronously after this method call."},{"method":"patch","path":"/v1/organizations/:organizationId/services/:serviceId/state","name":"v1_organizations_services_state_patchByOrganizationidAndServiceid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the organization that owns the service."},"serviceId":{"type":"string","format":"uuid","description":"ID of the service to update state."},"body":{}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Update service state.\n\nStarts or stop service"},{"method":"patch","path":"/v1/organizations/:organizationId/services/:serviceId/scaling","name":"v1_organizations_services_scaling_patchByOrganizationidAndServiceid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the organization that owns the service."},"serviceId":{"type":"string","format":"uuid","description":"ID of the service to update scaling parameters."},"body":{}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Update service auto scaling settings.\n\nUpdates minimum and maximum total memory limits and idle mode scaling behavior for the service. The memory settings are available only for \"production\" services and must be a multiple of 12 starting from 24GB."},{"method":"patch","path":"/v1/organizations/:organizationId/services/:serviceId/password","name":"v1_organizations_services_password_patchByOrganizationidAndServiceid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the organization that owns the service."},"serviceId":{"type":"string","format":"uuid","description":"ID of the service to update password."},"body":{}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Update service password.\n\nSets a new password for the service"},{"method":"get","path":"/v1/organizations/:organizationId/services/:serviceId/backups","name":"v1_organizations_services_backups_getByOrganizationidAndServiceid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the organization that owns the backup."},"serviceId":{"type":"string","format":"uuid","description":"ID of the service the backup was created from."}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"List of service backups.\n\nReturns a list of all backups for the service."},{"method":"get","path":"/v1/organizations/:organizationId/services/:serviceId/backups/:backupId","name":"v1_organizations_services_backups_getByOrganizationidAndServiceidAndBackupid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the organization that owns the backup."},"serviceId":{"type":"string","format":"uuid","description":"ID of the service the backup was created from."},"backupId":{"type":"string","format":"uuid","description":"ID of the requested backup."}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Get backup details.\n\nReturns a single backup info."},{"method":"get","path":"/v1/organizations/:organizationId/keys","name":"v1_organizations_keys_getByOrganizationid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the requested organization."}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Get list of all keys.\n\nReturns a list of all keys in the organization."},{"method":"post","path":"/v1/organizations/:organizationId/keys","name":"v1_organizations_keys_postByOrganizationid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the organization that will own the key."},"body":{}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Create key.\n\nCreates new API key."},{"method":"get","path":"/v1/organizations/:organizationId/keys/:keyId","name":"v1_organizations_keys_getByOrganizationidAndKeyid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the requested organization."},"keyId":{"type":"string","format":"uuid","description":"ID of the requested key."}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Get key details.\n\nReturns a single key details."},{"method":"patch","path":"/v1/organizations/:organizationId/keys/:keyId","name":"v1_organizations_keys_patchByOrganizationidAndKeyid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the organization that owns the key."},"keyId":{"type":"string","format":"uuid","description":"ID of the key to update."},"body":{}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Update key.\n\nUpdates API key properties."},{"method":"delete","path":"/v1/organizations/:organizationId/keys/:keyId","name":"v1_organizations_keys_eraseByOrganizationidAndKeyid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the organization that owns the key."},"keyId":{"type":"string","format":"uuid","description":"ID of the key to delete."}}}],"description":"Delete key.\n\nDeletes API key. Only a key not used to authenticate the active request can be deleted."},{"method":"get","path":"/v1/organizations/:organizationId/members","name":"v1_organizations_members_getByOrganizationid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the requested organization."}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"List organization members.\n\nReturns a list of all members in the organization."},{"method":"get","path":"/v1/organizations/:organizationId/members/:userId","name":"v1_organizations_members_getByOrganizationidAndUserid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the organization the member is part of."},"userId":{"type":"string","format":"uuid","description":"ID of the requested user."}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Get member details.\n\nReturns a single organization member details."},{"method":"patch","path":"/v1/organizations/:organizationId/members/:userId","name":"v1_organizations_members_patchByOrganizationidAndUserid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the organization the member is part of."},"userId":{"type":"string","format":"uuid","description":"ID of the user to patch"},"body":{}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Update organization member.\n\nUpdates organization member role."},{"method":"delete","path":"/v1/organizations/:organizationId/members/:userId","name":"v1_organizations_members_eraseByOrganizationidAndUserid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the requested organization."},"userId":{"type":"string","format":"uuid","description":"ID of the requested user."}}}],"description":"Remove an organization member.\n\nRemoves a user from the organization"},{"method":"get","path":"/v1/organizations/:organizationId/invitations","name":"v1_organizations_invitations_getByOrganizationid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the requested organization."}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"List all invitations.\n\nReturns list of all organization invitations."},{"method":"post","path":"/v1/organizations/:organizationId/invitations","name":"v1_organizations_invitations_postByOrganizationid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the organization to invite a user to."},"body":{}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Create an invitation.\n\nCreates organization invitation."},{"method":"get","path":"/v1/organizations/:organizationId/invitations/:invitationId","name":"v1_organizations_invitations_getByOrganizationidAndInvitationid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the requested organization."},"invitationId":{"type":"string","format":"uuid","description":"ID of the requested organization."}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Get invitation details.\n\nReturns details for a single organization invitation."},{"method":"delete","path":"/v1/organizations/:organizationId/invitations/:invitationId","name":"v1_organizations_invitations_eraseByOrganizationidAndInvitationid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the organization that has the invitation."},"invitationId":{"type":"string","format":"uuid","description":"ID of the requested organization."}}}],"description":"Delete organization invitation.\n\nDeletes a single organization invitation."},{"method":"get","path":"/v1/organizations/:organizationId/activities","name":"v1_organizations_activities_getByOrganizationid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the requested organization."}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"List of organization activities.\n\nReturns a list of all organization activities."},{"method":"get","path":"/v1/organizations/:organizationId/activities/:activityId","name":"v1_organizations_activities_getByOrganizationidAndActivityid","parameters":[{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","description":"ID of the requested organization."},"activityId":{"type":"string","description":"ID of the requested activity."}}}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Organization activity.\n\nReturns a single organization activity by ID."}],"errors":[],"options":{"keyword":true,"separate":null}} \ No newline at end of file diff --git a/examples/keyword/fireblocks.json b/examples/keyword/fireblocks.json index 98e5300..da74139 100644 --- a/examples/keyword/fireblocks.json +++ b/examples/keyword/fireblocks.json @@ -1,16029 +1 @@ -{ - "openapi": "3.0.3", - "functions": [ - { - "method": "get", - "path": "/vault/accounts", - "name": "vault_accounts_get", - "parameters": [ - { - "type": "object", - "properties": { - "query": { - "type": "object", - "properties": { - "namePrefix": { - "type": "string" - }, - "nameSuffix": { - "type": "string" - }, - "minAmountThreshold": { - "type": "number" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset" - } - }, - "required": [] - } - } - } - ], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "total": { - "description": "The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.", - "type": "string" - }, - "balance": { - "deprecated": true, - "description": "Deprecated - replaced by \"total\"", - "type": "string" - }, - "available": { - "description": "Funds available for transfer. Equals the blockchain balance minus any locked amounts", - "type": "string" - }, - "pending": { - "description": "The cumulative balance of all transactions pending to be cleared", - "type": "string" - }, - "frozen": { - "description": "The cumulative frozen balance", - "type": "string" - }, - "lockedAmount": { - "description": "Funds in outgoing transactions that are not yet published to the network", - "type": "string" - }, - "staked": { - "description": "Staked balance", - "type": "string" - }, - "totalStakedCPU": { - "type": "number", - "description": "Deprecated" - }, - "totalStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedCPU": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundCPU": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundNetwork": { - "type": "string", - "description": "Deprecated" - }, - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - }, - "rewardsInfo": { - "type": "object", - "properties": { - "pendingRewards": { - "description": "Amount that is pending for rewards", - "type": "string" - } - } - } - } - } - }, - "hiddenOnUI": { - "type": "boolean" - }, - "customerRefId": { - "type": "string" - }, - "autoFuel": { - "type": "boolean" - } - } - } - }, - "description": "List vault accounts.\n\nGets all vault accounts in your workspace." - }, - { - "method": "post", - "path": "/vault/accounts", - "name": "vault_accounts_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": {} - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "total": { - "description": "The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.", - "type": "string" - }, - "balance": { - "deprecated": true, - "description": "Deprecated - replaced by \"total\"", - "type": "string" - }, - "available": { - "description": "Funds available for transfer. Equals the blockchain balance minus any locked amounts", - "type": "string" - }, - "pending": { - "description": "The cumulative balance of all transactions pending to be cleared", - "type": "string" - }, - "frozen": { - "description": "The cumulative frozen balance", - "type": "string" - }, - "lockedAmount": { - "description": "Funds in outgoing transactions that are not yet published to the network", - "type": "string" - }, - "staked": { - "description": "Staked balance", - "type": "string" - }, - "totalStakedCPU": { - "type": "number", - "description": "Deprecated" - }, - "totalStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedCPU": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundCPU": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundNetwork": { - "type": "string", - "description": "Deprecated" - }, - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - }, - "rewardsInfo": { - "type": "object", - "properties": { - "pendingRewards": { - "description": "Amount that is pending for rewards", - "type": "string" - } - } - } - } - } - }, - "hiddenOnUI": { - "type": "boolean" - }, - "customerRefId": { - "type": "string" - }, - "autoFuel": { - "type": "boolean" - } - } - }, - "description": "Create a new vault account.\n\nCreates a new vault account with the requested name." - }, - { - "method": "get", - "path": "/vault/accounts_paged", - "name": "vault_accounts_paged_get", - "parameters": [ - { - "type": "object", - "properties": { - "query": { - "type": "object", - "properties": { - "namePrefix": { - "type": "string" - }, - "nameSuffix": { - "type": "string" - }, - "minAmountThreshold": { - "type": "number" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset" - }, - "before": { - "type": "string" - }, - "after": { - "type": "string" - }, - "limit": { - "type": "number", - "minimum": 1, - "maximum": 500, - "default": 200 - } - }, - "required": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "accounts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "total": { - "description": "The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.", - "type": "string" - }, - "balance": { - "deprecated": true, - "description": "Deprecated - replaced by \"total\"", - "type": "string" - }, - "available": { - "description": "Funds available for transfer. Equals the blockchain balance minus any locked amounts", - "type": "string" - }, - "pending": { - "description": "The cumulative balance of all transactions pending to be cleared", - "type": "string" - }, - "frozen": { - "description": "The cumulative frozen balance", - "type": "string" - }, - "lockedAmount": { - "description": "Funds in outgoing transactions that are not yet published to the network", - "type": "string" - }, - "staked": { - "description": "Staked balance", - "type": "string" - }, - "totalStakedCPU": { - "type": "number", - "description": "Deprecated" - }, - "totalStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedCPU": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundCPU": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundNetwork": { - "type": "string", - "description": "Deprecated" - }, - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - }, - "rewardsInfo": { - "type": "object", - "properties": { - "pendingRewards": { - "description": "Amount that is pending for rewards", - "type": "string" - } - } - } - } - } - }, - "hiddenOnUI": { - "type": "boolean" - }, - "customerRefId": { - "type": "string" - }, - "autoFuel": { - "type": "boolean" - } - } - } - }, - "paging": { - "type": "object", - "properties": { - "before": { - "type": "string" - }, - "after": { - "type": "string" - } - } - }, - "previousUrl": { - "type": "string" - }, - "nextUrl": { - "type": "string" - } - } - }, - "description": "List vault acounts (Paginated).\n\nGets all vault accounts in your workspace. This endpoint returns a limited amount of results with a quick response time." - }, - { - "method": "get", - "path": "/vault/accounts/{vaultAccountId}", - "name": "vault_accounts_getByVaultaccountid", - "parameters": [ - { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account to return type: string" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "total": { - "description": "The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.", - "type": "string" - }, - "balance": { - "deprecated": true, - "description": "Deprecated - replaced by \"total\"", - "type": "string" - }, - "available": { - "description": "Funds available for transfer. Equals the blockchain balance minus any locked amounts", - "type": "string" - }, - "pending": { - "description": "The cumulative balance of all transactions pending to be cleared", - "type": "string" - }, - "frozen": { - "description": "The cumulative frozen balance", - "type": "string" - }, - "lockedAmount": { - "description": "Funds in outgoing transactions that are not yet published to the network", - "type": "string" - }, - "staked": { - "description": "Staked balance", - "type": "string" - }, - "totalStakedCPU": { - "type": "number", - "description": "Deprecated" - }, - "totalStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedCPU": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundCPU": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundNetwork": { - "type": "string", - "description": "Deprecated" - }, - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - }, - "rewardsInfo": { - "type": "object", - "properties": { - "pendingRewards": { - "description": "Amount that is pending for rewards", - "type": "string" - } - } - } - } - } - }, - "hiddenOnUI": { - "type": "boolean" - }, - "customerRefId": { - "type": "string" - }, - "autoFuel": { - "type": "boolean" - } - } - }, - "description": "Find a vault account by ID.\n\nReturns the requested vault account." - }, - { - "method": "put", - "path": "/vault/accounts/{vaultAccountId}", - "name": "vault_accounts_putByVaultaccountid", - "parameters": [ - { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account to edit" - }, - "body": {} - } - } - ], - "description": "Rename a vault account.\n\nRenames the requested vault account." - }, - { - "method": "get", - "path": "/vault/asset_wallets", - "name": "vault_asset_wallets_get", - "parameters": [ - { - "type": "object", - "properties": { - "query": { - "type": "object", - "properties": { - "totalAmountLargerThan": { - "type": "number", - "description": "When specified, only asset wallets with total balance larger than this amount are returned." - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset", - "description": "When specified, only asset wallets cross vault accounts that have this asset ID are returned." - }, - "before": { - "type": "string", - "description": "Fetches the next paginated response before this element. This element is a cursor and is returned at the response of the previous page." - }, - "after": { - "type": "string", - "description": "Fetches the next paginated response after this element. This element is a cursor and is returned at the response of the previous page." - }, - "limit": { - "type": "number", - "minimum": 1, - "maximum": 1000, - "default": 200, - "description": "The maximum number of asset wallets in a single response. The default is 200 and the maximum is 1000." - } - }, - "required": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "assetWallets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "vaultId": { - "description": "ID of the vault account. You can [get the vault account by this ID](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid) to retrieve vault properties such as its name, auto fueling, hidden on UI or customer reference ID.", - "type": "string" - }, - "assetId": { - "description": "ID of the asset. You can get more information about this asset by using the [supported assets API](https://developers.fireblocks.com/reference/get_supported-assets)", - "type": "string" - }, - "available": { - "description": "Available balance, available to use in a transaction.", - "type": "string" - }, - "total": { - "description": "Total balance at the asset wallet, as seen at the blockchain explorers. This includes balance available, and any kind of unavailable balance such as locked, frozen, or others.", - "type": "string" - }, - "pending": { - "description": "Pending balance.", - "type": "string" - }, - "staked": { - "description": "Staked balance.", - "type": "string" - }, - "frozen": { - "description": "Funds frozen due to the anti-money laundering policy at this workspace.", - "type": "string" - }, - "lockedAmount": { - "description": "Locked balance.", - "type": "string" - }, - "blockHeight": { - "description": "The height (number) of the block of the balance. Can by empty.", - "type": "string" - }, - "blockHash": { - "description": "The hash of the block of the balance. Can by empty.", - "type": "string" - }, - "creationTimestamp": { - "description": "Unix timestamp of the time the asset wallet was created.", - "type": "string" - } - } - } - }, - "paging": { - "type": "object", - "properties": { - "before": { - "description": "A string representing a cursor. Users can use this with a new request to this API endpoint as the “before” request parameter to fetch the previous page of results.", - "type": "string" - }, - "after": { - "description": "A string representing a cursor. Users can use this with a new request to this API endpoint as the “before” request parameter to fetch the next page of results.", - "type": "string" - } - } - } - } - }, - "description": "List asset wallets (Paginated).\n\nGets all asset wallets at all of the vault accounts in your workspace. An asset wallet is an asset at a vault account. This method allows fast traversal of all account balances.\n**Note:**\n - This API endpoint is in limited availability and available for selected customers. If you would like to get early access to this endpoint, please reach out to [Fireblocks Support](https://support.fireblocks.io/hc/en-us/requests/new?ticket_form_id=36000337220)\n - This API call is subject to [rate limits](https://developers.fireblocks.com/reference/rate-limiting).\n" - }, - { - "method": "post", - "path": "/vault/accounts/{vaultAccountId}/hide", - "name": "vault_accounts_hide_postByVaultaccountid", - "parameters": [ - { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "string", - "minimum": 1, - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The vault account to hide" - } - } - } - ], - "description": "Hide a vault account in the console.\n\nHides the requested vault account from the web console view." - }, - { - "method": "post", - "path": "/vault/accounts/{vaultAccountId}/unhide", - "name": "vault_accounts_unhide_postByVaultaccountid", - "parameters": [ - { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "string", - "minimum": 1, - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The vault account to unhide" - } - } - } - ], - "description": "Unhide a vault account in the console.\n\nMakes a hidden vault account visible in web console view." - }, - { - "method": "post", - "path": "/vault/accounts/{vaultAccountId}/{assetId}/activate", - "name": "vault_accounts_activate_postByVaultaccountidAndAssetid", - "parameters": [ - { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account to return, or 'default' for the default vault account" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "address": { - "type": "string" - }, - "legacyAddress": { - "type": "string" - }, - "enterpriseAddress": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "eosAccountName": { - "type": "string" - }, - "status": { - "type": "string" - }, - "activationTxId": { - "type": "string" - } - } - }, - "description": "Activate a wallet in a vault account.\n\nInitiates activation for a wallet in a vault account." - }, - { - "method": "post", - "path": "/vault/accounts/{vaultAccountId}/set_customer_ref_id", - "name": "vault_accounts_set_customer_ref_id_postByVaultaccountid", - "parameters": [ - { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "string", - "minimum": 1, - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The vault account ID" - }, - "body": {} - } - } - ], - "description": "Set an AML/KYT customer reference ID for a vault account.\n\nAssigns an AML/KYT customer reference ID for the vault account." - }, - { - "method": "post", - "path": "/vault/accounts/{vaultAccountId}/set_auto_fuel", - "name": "vault_accounts_set_auto_fuel_postByVaultaccountid", - "parameters": [ - { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "string", - "minimum": 1, - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The vault account ID" - }, - "body": {} - } - } - ], - "description": "Turn autofueling on or off.\n\nSets the autofueling property of the vault account to enabled or disabled." - }, - { - "method": "get", - "path": "/vault/accounts/{vaultAccountId}/{assetId}", - "name": "vault_accounts_getByVaultaccountidAndAssetid", - "parameters": [ - { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account to return" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "total": { - "description": "The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.", - "type": "string" - }, - "balance": { - "deprecated": true, - "description": "Deprecated - replaced by \"total\"", - "type": "string" - }, - "available": { - "description": "Funds available for transfer. Equals the blockchain balance minus any locked amounts", - "type": "string" - }, - "pending": { - "description": "The cumulative balance of all transactions pending to be cleared", - "type": "string" - }, - "frozen": { - "description": "The cumulative frozen balance", - "type": "string" - }, - "lockedAmount": { - "description": "Funds in outgoing transactions that are not yet published to the network", - "type": "string" - }, - "staked": { - "description": "Staked balance", - "type": "string" - }, - "totalStakedCPU": { - "type": "number", - "description": "Deprecated" - }, - "totalStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedCPU": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundCPU": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundNetwork": { - "type": "string", - "description": "Deprecated" - }, - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - }, - "rewardsInfo": { - "type": "object", - "properties": { - "pendingRewards": { - "description": "Amount that is pending for rewards", - "type": "string" - } - } - } - } - }, - "description": "Get the asset balance for a vault account.\n\nReturns a wallet for a specific asset of a vault account." - }, - { - "method": "post", - "path": "/vault/accounts/{vaultAccountId}/{assetId}", - "name": "vault_accounts_postByVaultaccountidAndAssetid", - "parameters": [ - { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account to return, or 'default' for the default vault account" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - }, - "body": {} - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "address": { - "type": "string" - }, - "legacyAddress": { - "type": "string" - }, - "enterpriseAddress": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "eosAccountName": { - "type": "string" - }, - "status": { - "type": "string" - }, - "activationTxId": { - "type": "string" - } - } - }, - "description": "Create a new wallet.\n\nCreates a wallet for a specific asset in a vault account." - }, - { - "method": "post", - "path": "/vault/accounts/{vaultAccountId}/{assetId}/balance", - "name": "vault_accounts_balance_postByVaultaccountidAndAssetid", - "parameters": [ - { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account to return" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - }, - "body": { - "type": "object" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "total": { - "description": "The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.", - "type": "string" - }, - "balance": { - "deprecated": true, - "description": "Deprecated - replaced by \"total\"", - "type": "string" - }, - "available": { - "description": "Funds available for transfer. Equals the blockchain balance minus any locked amounts", - "type": "string" - }, - "pending": { - "description": "The cumulative balance of all transactions pending to be cleared", - "type": "string" - }, - "frozen": { - "description": "The cumulative frozen balance", - "type": "string" - }, - "lockedAmount": { - "description": "Funds in outgoing transactions that are not yet published to the network", - "type": "string" - }, - "staked": { - "description": "Staked balance", - "type": "string" - }, - "totalStakedCPU": { - "type": "number", - "description": "Deprecated" - }, - "totalStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedCPU": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundCPU": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundNetwork": { - "type": "string", - "description": "Deprecated" - }, - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - }, - "rewardsInfo": { - "type": "object", - "properties": { - "pendingRewards": { - "description": "Amount that is pending for rewards", - "type": "string" - } - } - } - } - }, - "description": "Refresh asset balance data.\n\nUpdates the balance of a specific asset in a vault account." - }, - { - "method": "get", - "path": "/vault/accounts/{vaultAccountId}/{assetId}/addresses", - "name": "vault_accounts_addresses_getByVaultaccountidAndAssetid", - "parameters": [ - { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account to return" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - } - } - } - ], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "assetId": { - "type": "string", - "x-fb-entity": "asset" - }, - "address": { - "type": "string" - }, - "description": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "type": { - "type": "string" - }, - "customerRefId": { - "type": "string" - }, - "addressFormat": { - "type": "string", - "enum": [ - "SEGWIT", - "LEGACY" - ] - }, - "legacyAddress": { - "type": "string" - }, - "enterpriseAddress": { - "type": "string" - }, - "bip44AddressIndex": { - "type": "integer" - }, - "userDefined": { - "type": "boolean" - } - } - } - }, - "description": "Get asset addresses.\n\nLists all addresses for specific asset of vault account." - }, - { - "method": "post", - "path": "/vault/accounts/{vaultAccountId}/{assetId}/addresses", - "name": "vault_accounts_addresses_postByVaultaccountidAndAssetid", - "parameters": [ - { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account to return" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - }, - "body": {} - } - } - ], - "output": { - "type": "object", - "properties": { - "address": { - "type": "string" - }, - "legacyAddress": { - "type": "string" - }, - "enterpriseAddress": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "bip44AddressIndex": { - "type": "integer" - } - } - }, - "description": "Create new asset deposit address.\n\nCreates a new deposit address for an asset of a vault account." - }, - { - "method": "get", - "path": "/vault/accounts/{vaultAccountId}/{assetId}/max_spendable_amount", - "name": "vault_accounts_max_spendable_amount_getByVaultaccountidAndAssetid", - "parameters": [ - { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account, or 'default' for the default vault account" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - }, - "query": { - "type": "object", - "properties": { - "manualSignging": { - "type": "boolean", - "description": "False by default. The maximum number of inputs depends if the transaction will be signed by an automated co-signer server or on a mobile device." - } - }, - "required": [] - } - } - } - ], - "description": "Get the maximum spendable amount in a single transaction.\n\nGet the maximum amount of a particular asset that can be spent in a single transaction from a specified vault account (UTXO assets only, with a limitation on number of inputs embedded). Send several transactions if you want to spend more than the maximum spendable amount." - }, - { - "method": "put", - "path": "/vault/accounts/{vaultAccountId}/{assetId}/addresses/{addressId}", - "name": "vault_accounts_addresses_putByVaultaccountidAndAssetidAndAddressid", - "parameters": [ - { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - }, - "addressId": { - "type": "string", - "description": "The address for which to add a description. For XRP, use
:, for all other assets, use only the address" - }, - "body": {} - } - } - ], - "description": "Update address description.\n\nUpdates the description of an existing address of an asset in a vault account." - }, - { - "method": "post", - "path": "/vault/accounts/{vaultAccountId}/{assetId}/addresses/{addressId}/set_customer_ref_id", - "name": "vault_accounts_addresses_set_customer_ref_id_postByVaultaccountidAndAssetidAndAddressid", - "parameters": [ - { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - }, - "addressId": { - "type": "string", - "description": "The address for which to add a description. For XRP, use
:, for all other assets, use only the address" - }, - "body": {} - } - } - ], - "description": "Assign AML customer reference ID.\n\nSets an AML/KYT customer reference ID for a specific address." - }, - { - "method": "post", - "path": "/vault/accounts/{vaultAccountId}/{assetId}/addresses/{addressId}/create_legacy", - "name": "vault_accounts_addresses_create_legacy_postByVaultaccountidAndAssetidAndAddressid", - "parameters": [ - { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - }, - "addressId": { - "type": "string", - "description": "The segwit address to translate" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "address": { - "type": "string" - }, - "legacyAddress": { - "type": "string" - }, - "enterpriseAddress": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "bip44AddressIndex": { - "type": "integer" - } - } - }, - "description": "Convert a segwit address to legacy format.\n\nConverts an existing segwit address to the legacy format." - }, - { - "method": "get", - "path": "/vault/accounts/{vaultAccountId}/{assetId}/unspent_inputs", - "name": "vault_accounts_unspent_inputs_getByVaultaccountidAndAssetid", - "parameters": [ - { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - } - } - } - ], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "input": { - "type": "object", - "properties": { - "txHash": { - "type": "string" - }, - "index": { - "type": "number" - } - } - }, - "address": { - "type": "string" - }, - "amount": { - "type": "string" - }, - "confirmations": { - "type": "number" - }, - "status": { - "type": "string" - } - } - } - }, - "description": "Get UTXO unspent inputs information.\n\nReturns unspent inputs information of an asset in a vault account." - }, - { - "method": "get", - "path": "/vault/public_key_info/", - "name": "vault_public_key_info_get", - "parameters": [ - { - "type": "object", - "properties": { - "query": { - "type": "object", - "properties": { - "derivationPath": { - "type": "string" - }, - "algorithm": { - "type": "string" - }, - "compressed": { - "type": "boolean" - } - }, - "required": [ - "derivationPath", - "algorithm" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "algorithm": { - "type": "string" - }, - "derivationPath": { - "type": "array", - "items": { - "type": "number" - } - }, - "publicKey": { - "type": "string" - } - } - }, - "description": "Get the public key information.\n\nGets the public key information based on derivation path and signing algorithm." - }, - { - "method": "get", - "path": "/vault/accounts/{vaultAccountId}/{assetId}/{change}/{addressIndex}/public_key_info", - "name": "vault_accounts_public_key_info_getByVaultaccountidAndAssetidAndChangeAndAddressindex", - "parameters": [ - { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset" - }, - "change": { - "type": "number" - }, - "addressIndex": { - "type": "number" - }, - "query": { - "type": "object", - "properties": { - "compressed": { - "type": "boolean" - } - }, - "required": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "algorithm": { - "type": "string" - }, - "derivationPath": { - "type": "array", - "items": { - "type": "number" - } - }, - "publicKey": { - "type": "string" - } - } - }, - "description": "Get the public key for a vault account.\n\nGets the public key information for the vault account." - }, - { - "method": "get", - "path": "/vault/assets", - "name": "vault_assets_get", - "parameters": [ - { - "type": "object", - "properties": { - "query": { - "type": "object", - "properties": { - "accountNamePrefix": { - "type": "string" - }, - "accountNameSuffix": { - "type": "string" - } - }, - "required": [] - } - } - } - ], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "total": { - "description": "The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.", - "type": "string" - }, - "balance": { - "deprecated": true, - "description": "Deprecated - replaced by \"total\"", - "type": "string" - }, - "available": { - "description": "Funds available for transfer. Equals the blockchain balance minus any locked amounts", - "type": "string" - }, - "pending": { - "description": "The cumulative balance of all transactions pending to be cleared", - "type": "string" - }, - "frozen": { - "description": "The cumulative frozen balance", - "type": "string" - }, - "lockedAmount": { - "description": "Funds in outgoing transactions that are not yet published to the network", - "type": "string" - }, - "staked": { - "description": "Staked balance", - "type": "string" - }, - "totalStakedCPU": { - "type": "number", - "description": "Deprecated" - }, - "totalStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedCPU": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundCPU": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundNetwork": { - "type": "string", - "description": "Deprecated" - }, - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - }, - "rewardsInfo": { - "type": "object", - "properties": { - "pendingRewards": { - "description": "Amount that is pending for rewards", - "type": "string" - } - } - } - } - } - }, - "description": "Get asset balance for chosen assets.\n\nGets the assets amount summary for all accounts or filtered accounts." - }, - { - "method": "get", - "path": "/vault/assets/{assetId}", - "name": "vault_assets_getByAssetid", - "parameters": [ - { - "type": "object", - "properties": { - "assetId": { - "type": "string", - "x-fb-entity": "asset" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "total": { - "description": "The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.", - "type": "string" - }, - "balance": { - "deprecated": true, - "description": "Deprecated - replaced by \"total\"", - "type": "string" - }, - "available": { - "description": "Funds available for transfer. Equals the blockchain balance minus any locked amounts", - "type": "string" - }, - "pending": { - "description": "The cumulative balance of all transactions pending to be cleared", - "type": "string" - }, - "frozen": { - "description": "The cumulative frozen balance", - "type": "string" - }, - "lockedAmount": { - "description": "Funds in outgoing transactions that are not yet published to the network", - "type": "string" - }, - "staked": { - "description": "Staked balance", - "type": "string" - }, - "totalStakedCPU": { - "type": "number", - "description": "Deprecated" - }, - "totalStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedCPU": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundCPU": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundNetwork": { - "type": "string", - "description": "Deprecated" - }, - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - }, - "rewardsInfo": { - "type": "object", - "properties": { - "pendingRewards": { - "description": "Amount that is pending for rewards", - "type": "string" - } - } - } - } - }, - "description": "Get vault balance by asset.\n\nGets the vault balance summary for an asset." - }, - { - "method": "get", - "path": "/exchange_accounts", - "name": "exchange_accounts_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "BINANCE", - "BINANCEUS", - "BITFINEX", - "BITHUMB", - "BITMEX", - "BITSO", - "BITSTAMP", - "BITTREX", - "CIRCLE", - "COINBASEPRO", - "COINMETRO", - "COINSPRO", - "CRYPTOCOM", - "DERIBIT", - "FTX", - "FIXUS", - "GEMINI", - "HITBTC", - "HUOBI", - "KORBIT", - "KRAKEN", - "LIQUID", - "POLONIEX", - "OKCOIN", - "OKEX", - "SEEDCX" - ] - }, - "name": { - "type": "string", - "description": "Display name of the exchange account" - }, - "status": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "total": { - "type": "string" - }, - "available": { - "type": "string" - } - } - } - }, - "tradingAccounts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "name": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "total": { - "type": "string" - }, - "available": { - "type": "string" - } - } - } - } - } - } - }, - "isSubaccount": { - "type": "boolean", - "description": "True if the account is a subaccount in an exchange" - }, - "mainAccountId": { - "description": "if the account is a sub-account, the ID of the main account", - "type": "string" - } - } - } - }, - "description": "List exchange accounts.\n\nReturns all exchange accounts." - }, - { - "method": "get", - "path": "/exchange_accounts/{exchangeAccountId}", - "name": "exchange_accounts_getByExchangeaccountid", - "parameters": [ - { - "type": "object", - "properties": { - "exchangeAccountId": { - "type": "string", - "minimum": 1, - "description": "The ID of the exchange account to return" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "BINANCE", - "BINANCEUS", - "BITFINEX", - "BITHUMB", - "BITMEX", - "BITSO", - "BITSTAMP", - "BITTREX", - "CIRCLE", - "COINBASEPRO", - "COINMETRO", - "COINSPRO", - "CRYPTOCOM", - "DERIBIT", - "FTX", - "FIXUS", - "GEMINI", - "HITBTC", - "HUOBI", - "KORBIT", - "KRAKEN", - "LIQUID", - "POLONIEX", - "OKCOIN", - "OKEX", - "SEEDCX" - ] - }, - "name": { - "type": "string", - "description": "Display name of the exchange account" - }, - "status": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "total": { - "type": "string" - }, - "available": { - "type": "string" - } - } - } - }, - "tradingAccounts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "name": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "total": { - "type": "string" - }, - "available": { - "type": "string" - } - } - } - } - } - } - }, - "isSubaccount": { - "type": "boolean", - "description": "True if the account is a subaccount in an exchange" - }, - "mainAccountId": { - "description": "if the account is a sub-account, the ID of the main account", - "type": "string" - } - } - }, - "description": "Find a specific exchange account.\n\nReturns an exchange account by ID." - }, - { - "method": "post", - "path": "/exchange_accounts/{exchangeAccountId}/internal_transfer", - "name": "exchange_accounts_internal_transfer_postByExchangeaccountid", - "parameters": [ - { - "type": "object", - "properties": { - "exchangeAccountId": { - "type": "string", - "minimum": 1, - "description": "The ID of the exchange account to return" - }, - "body": {} - } - } - ], - "description": "Internal tranfer for exchange accounts.\n\nTransfers funds between trading accounts under the same exchange account." - }, - { - "method": "post", - "path": "/exchange_accounts/{exchangeAccountId}/convert", - "name": "exchange_accounts_convert_postByExchangeaccountid", - "parameters": [ - { - "type": "object", - "properties": { - "exchangeAccountId": { - "type": "string", - "minimum": 1, - "description": "The ID of the exchange account. Please make sure the exchange supports conversions. To find the ID of your exchange account, use GET/exchange_accounts." - }, - "body": {} - } - } - ], - "description": "Convert exchange account funds from the source asset to the destination asset. Coinbase (USD to USDC, USDC to USD) and Bitso (MXN to USD) are supported conversions." - }, - { - "method": "get", - "path": "/exchange_accounts/{exchangeAccountId}/{assetId}", - "name": "exchange_accounts_getByExchangeaccountidAndAssetid", - "parameters": [ - { - "type": "object", - "properties": { - "exchangeAccountId": { - "type": "string", - "minimum": 1, - "description": "The ID of the exchange account to return" - }, - "assetId": { - "type": "string", - "minimum": 1, - "description": "The ID of the asset to return" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "total": { - "type": "string" - }, - "available": { - "type": "string" - } - } - }, - "description": "Find an asset for an exchange account.\n\nReturns an asset for an exchange account." - }, - { - "method": "get", - "path": "/fiat_accounts", - "name": "fiat_accounts_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "BLINC" - ] - }, - "name": { - "type": "string", - "description": "Display name of the fiat account" - }, - "address": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - } - } - } - } - } - } - }, - "description": "List fiat accounts.\n\nReturns all fiat accounts." - }, - { - "method": "get", - "path": "/fiat_accounts/{accountId}", - "name": "fiat_accounts_getByAccountid", - "parameters": [ - { - "type": "object", - "properties": { - "accountId": { - "type": "string", - "minimum": 1, - "description": "The ID of the fiat account to return" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "BLINC" - ] - }, - "name": { - "type": "string", - "description": "Display name of the fiat account" - }, - "address": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - } - } - } - } - } - }, - "description": "Find a specific fiat account.\n\nReturns a fiat account by ID." - }, - { - "method": "post", - "path": "/fiat_accounts/{accountId}/redeem_to_linked_dda", - "name": "fiat_accounts_redeem_to_linked_dda_postByAccountid", - "parameters": [ - { - "type": "object", - "properties": { - "accountId": { - "type": "string", - "minimum": 1, - "description": "The ID of the fiat account to use" - }, - "body": {} - } - } - ], - "description": "Redeem funds to DDA.\n\nRedeems funds to the linked DDA." - }, - { - "method": "post", - "path": "/fiat_accounts/{accountId}/deposit_from_linked_dda", - "name": "fiat_accounts_deposit_from_linked_dda_postByAccountid", - "parameters": [ - { - "type": "object", - "properties": { - "accountId": { - "type": "string", - "minimum": 1, - "description": "The ID of the fiat account to use" - }, - "body": {} - } - } - ], - "description": "Deposit funds from DDA.\n\nDeposits funds from the linked DDA." - }, - { - "method": "get", - "path": "/network_connections", - "name": "network_connections_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "localChannel": { - "deprecated": true, - "description": "Deprecated - Replaced by `localNetworkId`", - "type": "object", - "properties": { - "networkId": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "remoteChannel": { - "deprecated": true, - "description": "Deprecated - Replaced by `remoteNetworkId`", - "type": "object", - "properties": { - "networkId": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "localNetworkId": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "id", - "name" - ] - }, - "remoteNetworkId": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "id", - "name" - ] - }, - "routingPolicy": { - "type": "object", - "properties": { - "crypto": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "VAULT", - "EXCHANGE" - ], - "description": "The type of destination account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the destination account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "signet": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - } - ] - }, - "signet_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - } - } - } - }, - "required": [ - "id", - "localNetworkId", - "remoteNetworkId", - "routingPolicy", - "status" - ] - } - }, - "description": "List network connections.\n\nReturns all network connections.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "post", - "path": "/network_connections", - "name": "network_connections_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "localNetworkId": { - "type": "string", - "description": "The network ID of the profile trying to create the connection." - }, - "remoteNetworkId": { - "type": "string", - "description": "The network ID the profile is attempting to connect to." - }, - "routingPolicy": { - "type": "object", - "properties": { - "crypto": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "VAULT", - "EXCHANGE" - ], - "description": "The type of destination account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the destination account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "signet": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - } - ] - }, - "signet_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - } - } - } - }, - "required": [ - "localNetworkId", - "remoteNetworkId" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "localChannel": { - "deprecated": true, - "description": "Deprecated - Replaced by `localNetworkId`", - "type": "object", - "properties": { - "networkId": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "remoteChannel": { - "deprecated": true, - "description": "Deprecated - Replaced by `remoteNetworkId`", - "type": "object", - "properties": { - "networkId": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "localNetworkId": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "id", - "name" - ] - }, - "remoteNetworkId": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "id", - "name" - ] - }, - "routingPolicy": { - "type": "object", - "properties": { - "crypto": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "VAULT", - "EXCHANGE" - ], - "description": "The type of destination account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the destination account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "signet": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - } - ] - }, - "signet_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - } - } - } - }, - "required": [ - "id", - "localNetworkId", - "remoteNetworkId", - "routingPolicy", - "status" - ] - }, - "description": "Creates a new network connection.\n\nInitiates a new network connection.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "patch", - "path": "/network_connections/{connectionId}/set_routing_policy", - "name": "network_connections_set_routing_policy_patchByConnectionid", - "parameters": [ - { - "type": "object", - "properties": { - "connectionId": { - "type": "string", - "minimum": 1, - "description": "The ID of the network connection" - }, - "body": {} - } - } - ], - "output": {}, - "description": "Update network connection routing policy.\n\nUpdates an existing network connection's routing policy.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "get", - "path": "/network_connections/{connectionId}/is_third_party_routing/{assetType}", - "name": "network_connections_is_third_party_routing_getByConnectionidAndAssettype", - "parameters": [ - { - "type": "object", - "properties": { - "connectionId": { - "type": "string", - "minimum": 1, - "description": "The ID of the network connection" - }, - "assetType": { - "type": "string", - "enum": [ - "CRYPTO", - "SIGNET", - "SEN", - "SIGNET_TEST", - "SEN_TEST" - ], - "description": "The destination asset type" - } - } - } - ], - "output": {}, - "description": "Retrieve third-party network routing validation by asset type.\n\nThe Fireblocks Network allows for flexibility around incoming deposits. A receiver can receive network deposits to locations other than Fireblocks. This endpoint validates whether future transactions are routed to the displayed recipient or to a 3rd party." - }, - { - "method": "get", - "path": "/network_connections/{connectionId}", - "name": "network_connections_getByConnectionid", - "parameters": [ - { - "type": "object", - "properties": { - "connectionId": { - "type": "string", - "minimum": 1, - "description": "The ID of the connection" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "localChannel": { - "deprecated": true, - "description": "Deprecated - Replaced by `localNetworkId`", - "type": "object", - "properties": { - "networkId": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "remoteChannel": { - "deprecated": true, - "description": "Deprecated - Replaced by `remoteNetworkId`", - "type": "object", - "properties": { - "networkId": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "localNetworkId": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "id", - "name" - ] - }, - "remoteNetworkId": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "id", - "name" - ] - }, - "routingPolicy": { - "type": "object", - "properties": { - "crypto": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "VAULT", - "EXCHANGE" - ], - "description": "The type of destination account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the destination account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "signet": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - } - ] - }, - "signet_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - } - } - } - }, - "required": [ - "id", - "localNetworkId", - "remoteNetworkId", - "routingPolicy", - "status" - ] - }, - "description": "Get a network connection.\n\nGets a network connection by ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "delete", - "path": "/network_connections/{connectionId}", - "name": "network_connections_eraseByConnectionid", - "parameters": [ - { - "type": "object", - "properties": { - "connectionId": { - "type": "string", - "minimum": 1, - "description": "The ID of the network connection to delete" - } - } - } - ], - "output": {}, - "description": "Deletes a network connection by ID.\n\nDeletes an existing network connection specified by its connection ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "get", - "path": "/network_ids", - "name": "network_ids_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "array", - "items": {} - }, - "description": "Returns all network IDs, both local IDs and discoverable remote IDs.\n\nRetrieves a list of all local and discoverable remote network IDs.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "post", - "path": "/network_ids", - "name": "network_ids_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": {} - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "routingPolicy": { - "type": "object", - "properties": { - "crypto": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "VAULT", - "EXCHANGE" - ], - "description": "The type of destination account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the destination account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "signet": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - } - ] - }, - "signet_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - } - ] - } - } - }, - "isDiscoverable": { - "type": "boolean", - "description": "The specific network is discoverable." - } - } - }, - "description": "Creates a new Network ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "get", - "path": "/network_ids/{networkId}", - "name": "network_ids_getByNetworkid", - "parameters": [ - { - "type": "object", - "properties": { - "networkId": { - "type": "string", - "minimum": 1, - "description": "The ID of the network" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "routingPolicy": { - "type": "object", - "properties": { - "crypto": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "VAULT", - "EXCHANGE" - ], - "description": "The type of destination account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the destination account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "signet": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - } - ] - }, - "signet_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - } - ] - } - } - }, - "isDiscoverable": { - "type": "boolean", - "description": "The specific network is discoverable." - } - } - }, - "description": "Returns specific network ID.\n\nRetrieves a network by its ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "delete", - "path": "/network_ids/{networkId}", - "name": "network_ids_eraseByNetworkid", - "parameters": [ - { - "type": "object", - "properties": { - "networkId": { - "type": "string", - "minimum": 1, - "description": "The ID of the network" - } - } - } - ], - "output": {}, - "description": "Deletes specific network ID.\n\nDeletes a network by its ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "patch", - "path": "/network_ids/{networkId}/set_routing_policy", - "name": "network_ids_set_routing_policy_patchByNetworkid", - "parameters": [ - { - "type": "object", - "properties": { - "networkId": { - "type": "string", - "minimum": 1, - "description": "The ID of the network" - }, - "body": {} - } - } - ], - "output": {}, - "description": "Update network id routing policy.\n\nUpdates the routing policy of a specified network ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "patch", - "path": "/network_ids/{networkId}/set_discoverability", - "name": "network_ids_set_discoverability_patchByNetworkid", - "parameters": [ - { - "type": "object", - "properties": { - "networkId": { - "type": "string", - "minimum": 1, - "description": "The ID of the network" - }, - "body": {} - } - } - ], - "output": {}, - "description": "Update network ID's discoverability.\n\nUpdate whether or not the network ID is discoverable by others.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "patch", - "path": "/network_ids/{networkId}/set_name", - "name": "network_ids_set_name_patchByNetworkid", - "parameters": [ - { - "type": "object", - "properties": { - "networkId": { - "type": "string", - "minimum": 1, - "description": "The ID of the network" - }, - "body": {} - } - } - ], - "output": {}, - "description": "Update network ID's name.\n\nUpdates name of a specified network ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "get", - "path": "/internal_wallets", - "name": "internal_wallets_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "customerRefId": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - } - } - }, - "required": [ - "id", - "name", - "status" - ] - } - }, - "description": "List internal wallets.\n\nGets a list of internal wallets.\n\n**Note**: BTC-based assets belonging to whitelisted addresses cannot be retrieved between 00:00 UTC and 00:01 UTC daily due to third-party provider, Blockchair, being unavailable for this 60 second period. Please wait until the next minute to retrieve BTC-based assets.\n" - }, - { - "method": "post", - "path": "/internal_wallets", - "name": "internal_wallets_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": {} - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "customerRefId": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - } - } - }, - "required": [ - "id", - "name", - "status" - ] - }, - "description": "Create an internal wallet.\n\nCreates a new internal wallet with the requested name." - }, - { - "method": "get", - "path": "/internal_wallets/{walletId}", - "name": "internal_wallets_getByWalletid", - "parameters": [ - { - "type": "object", - "properties": { - "walletId": { - "type": "string", - "minimum": 1, - "description": "The ID of the wallet to return" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "customerRefId": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - } - } - }, - "required": [ - "id", - "name", - "status" - ] - }, - "description": "Get assets for internal wallet.\n\nReturns all assets in an internal wallet by ID." - }, - { - "method": "delete", - "path": "/internal_wallets/{walletId}", - "name": "internal_wallets_eraseByWalletid", - "parameters": [ - { - "type": "object", - "properties": { - "walletId": { - "type": "string", - "minimum": 1, - "description": "The ID of the wallet to delete" - } - } - } - ], - "description": "Delete an internal wallet.\n\nDeletes an internal wallet by ID." - }, - { - "method": "post", - "path": "/internal_wallets/{walletId}/set_customer_ref_id", - "name": "internal_wallets_set_customer_ref_id_postByWalletid", - "parameters": [ - { - "type": "object", - "properties": { - "walletId": { - "type": "string", - "minimum": 1, - "description": "The wallet ID" - }, - "body": {} - } - } - ], - "description": "Set an AML/KYT customer reference ID for an internal wallet.\n\nSets an AML/KYT customer reference ID for the specific internal wallet." - }, - { - "method": "get", - "path": "/internal_wallets/{walletId}/{assetId}", - "name": "internal_wallets_getByWalletidAndAssetid", - "parameters": [ - { - "type": "object", - "properties": { - "walletId": { - "type": "string", - "minimum": 1, - "description": "The ID of the wallet" - }, - "assetId": { - "type": "string", - "minimum": 1, - "x-fb-entity": "asset", - "description": "The ID of the asset to return" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - }, - "description": "Get an asset from an internal wallet.\n\nReturns information for an asset in an internal wallet." - }, - { - "method": "post", - "path": "/internal_wallets/{walletId}/{assetId}", - "name": "internal_wallets_postByWalletidAndAssetid", - "parameters": [ - { - "type": "object", - "properties": { - "walletId": { - "type": "string", - "description": "The ID of the wallet" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset to add" - }, - "body": {} - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - }, - "description": "Add an asset to an internal wallet.\n\nAdds an asset to an existing internal wallet." - }, - { - "method": "delete", - "path": "/internal_wallets/{walletId}/{assetId}", - "name": "internal_wallets_eraseByWalletidAndAssetid", - "parameters": [ - { - "type": "object", - "properties": { - "walletId": { - "type": "string", - "minimum": 1, - "description": "The ID of the wallet" - }, - "assetId": { - "type": "string", - "minimum": 1, - "x-fb-entity": "asset", - "description": "The ID of the asset to delete" - } - } - } - ], - "description": "Delete a whitelisted address from an internal wallet.\n\nDeletes a whitelisted address (for an asset) from an internal wallet." - }, - { - "method": "get", - "path": "/external_wallets", - "name": "external_wallets_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "customerRefId": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - } - } - }, - "required": [ - "id", - "name", - "status" - ] - } - }, - "description": "List external wallets.\n\nGets a list of external wallets under the workspace." - }, - { - "method": "post", - "path": "/external_wallets", - "name": "external_wallets_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": {} - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "customerRefId": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - } - } - }, - "required": [ - "id", - "name", - "status" - ] - }, - "description": "Create an external wallet.\n\nCreates a new external wallet with the requested name." - }, - { - "method": "get", - "path": "/external_wallets/{walletId}", - "name": "external_wallets_getByWalletid", - "parameters": [ - { - "type": "object", - "properties": { - "walletId": { - "type": "string", - "minimum": 1, - "description": "The ID of the wallet to return" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "customerRefId": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - } - } - }, - "required": [ - "id", - "name", - "status" - ] - }, - "description": "Find an external wallet.\n\nReturns an external wallet by ID." - }, - { - "method": "delete", - "path": "/external_wallets/{walletId}", - "name": "external_wallets_eraseByWalletid", - "parameters": [ - { - "type": "object", - "properties": { - "walletId": { - "type": "string", - "minimum": 1, - "description": "The ID of the wallet to delete" - } - } - } - ], - "description": "Delete an external wallet.\n\nDeletes an external wallet by ID." - }, - { - "method": "post", - "path": "/external_wallets/{walletId}/set_customer_ref_id", - "name": "external_wallets_set_customer_ref_id_postByWalletid", - "parameters": [ - { - "type": "object", - "properties": { - "walletId": { - "type": "string", - "minimum": 1, - "description": "The wallet ID" - }, - "body": {} - } - } - ], - "description": "Set an AML customer reference ID for an external wallet.\n\nSets an AML/KYT customer reference ID for the specific external wallet." - }, - { - "method": "get", - "path": "/external_wallets/{walletId}/{assetId}", - "name": "external_wallets_getByWalletidAndAssetid", - "parameters": [ - { - "type": "object", - "properties": { - "walletId": { - "type": "string", - "minimum": 1, - "description": "The ID of the wallet" - }, - "assetId": { - "type": "string", - "minimum": 1, - "x-fb-entity": "asset", - "description": "The ID of the asset to return" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - }, - "additionalInfo": { - "type": "array", - "items": { - "type": "object", - "properties": { - "accountHolderGivenName": { - "type": "string" - }, - "accountHolderSurname": { - "type": "string" - }, - "accountHolderCity": { - "type": "string" - }, - "accountHolderCountry": { - "type": "string" - }, - "accountHolderAddress1": { - "type": "string" - }, - "accountHolderAddress2": { - "type": "string" - }, - "accountHolderDistrict": { - "type": "string" - }, - "accountHolderPostalCode": { - "type": "string" - }, - "abaRoutingNumber": { - "type": "string" - }, - "abaAccountNumber": { - "type": "string" - }, - "abaCountry": { - "type": "string" - }, - "iban": { - "type": "string" - }, - "ibanCity": { - "type": "string" - }, - "ibanCountry": { - "type": "string" - }, - "speiClabe": { - "type": "string" - }, - "speiName": { - "type": "string" - } - } - } - } - } - }, - "description": "Get an asset from an external wallet.\n\nReturns an external wallet by wallet ID and asset ID." - }, - { - "method": "post", - "path": "/external_wallets/{walletId}/{assetId}", - "name": "external_wallets_postByWalletidAndAssetid", - "parameters": [ - { - "type": "object", - "properties": { - "walletId": { - "type": "string", - "description": "The ID of the wallet" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset to add" - }, - "body": {} - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - }, - "additionalInfo": { - "type": "array", - "items": { - "type": "object", - "properties": { - "accountHolderGivenName": { - "type": "string" - }, - "accountHolderSurname": { - "type": "string" - }, - "accountHolderCity": { - "type": "string" - }, - "accountHolderCountry": { - "type": "string" - }, - "accountHolderAddress1": { - "type": "string" - }, - "accountHolderAddress2": { - "type": "string" - }, - "accountHolderDistrict": { - "type": "string" - }, - "accountHolderPostalCode": { - "type": "string" - }, - "abaRoutingNumber": { - "type": "string" - }, - "abaAccountNumber": { - "type": "string" - }, - "abaCountry": { - "type": "string" - }, - "iban": { - "type": "string" - }, - "ibanCity": { - "type": "string" - }, - "ibanCountry": { - "type": "string" - }, - "speiClabe": { - "type": "string" - }, - "speiName": { - "type": "string" - } - } - } - } - } - }, - "description": "Add an asset to an external wallet.\n\nAdds an asset to an existing external wallet." - }, - { - "method": "delete", - "path": "/external_wallets/{walletId}/{assetId}", - "name": "external_wallets_eraseByWalletidAndAssetid", - "parameters": [ - { - "type": "object", - "properties": { - "walletId": { - "type": "string", - "minimum": 1, - "description": "The ID of the wallet" - }, - "assetId": { - "type": "string", - "minimum": 1, - "x-fb-entity": "asset", - "description": "The ID of the asset to delete" - } - } - } - ], - "description": "Delete an asset from an external wallet.\n\nDeletes an external wallet asset by ID." - }, - { - "method": "get", - "path": "/contracts", - "name": "contracts_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "customerRefId": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - } - } - }, - "required": [ - "id", - "name", - "status" - ] - } - }, - "description": "List contracts.\n\nGets a list of contracts." - }, - { - "method": "post", - "path": "/contracts", - "name": "contracts_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": {} - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "customerRefId": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - } - } - }, - "required": [ - "id", - "name", - "status" - ] - }, - "description": "Create a contract.\n\nCreates a new contract." - }, - { - "method": "get", - "path": "/contracts/{contractId}", - "name": "contracts_getByContractid", - "parameters": [ - { - "type": "object", - "properties": { - "contractId": { - "type": "string", - "minimum": 1, - "description": "The ID of the contract to return" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "customerRefId": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - } - } - }, - "required": [ - "id", - "name", - "status" - ] - }, - "description": "Find a specific contract.\n\nReturns a contract by ID." - }, - { - "method": "delete", - "path": "/contracts/{contractId}", - "name": "contracts_eraseByContractid", - "parameters": [ - { - "type": "object", - "properties": { - "contractId": { - "type": "string", - "minimum": 1, - "description": "The ID of the contract to delete" - } - } - } - ], - "description": "Delete a contract.\n\nDeletes a contract by ID." - }, - { - "method": "get", - "path": "/contracts/{contractId}/{assetId}", - "name": "contracts_getByContractidAndAssetid", - "parameters": [ - { - "type": "object", - "properties": { - "contractId": { - "type": "string", - "minimum": 1, - "description": "The ID of the contract" - }, - "assetId": { - "type": "string", - "minimum": 1, - "x-fb-entity": "asset", - "description": "The ID of the asset to return" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - }, - "additionalInfo": { - "type": "array", - "items": { - "type": "object", - "properties": { - "accountHolderGivenName": { - "type": "string" - }, - "accountHolderSurname": { - "type": "string" - }, - "accountHolderCity": { - "type": "string" - }, - "accountHolderCountry": { - "type": "string" - }, - "accountHolderAddress1": { - "type": "string" - }, - "accountHolderAddress2": { - "type": "string" - }, - "accountHolderDistrict": { - "type": "string" - }, - "accountHolderPostalCode": { - "type": "string" - }, - "abaRoutingNumber": { - "type": "string" - }, - "abaAccountNumber": { - "type": "string" - }, - "abaCountry": { - "type": "string" - }, - "iban": { - "type": "string" - }, - "ibanCity": { - "type": "string" - }, - "ibanCountry": { - "type": "string" - }, - "speiClabe": { - "type": "string" - }, - "speiName": { - "type": "string" - } - } - } - } - } - }, - "description": "Find a contract asset.\n\nReturns a contract asset by ID." - }, - { - "method": "post", - "path": "/contracts/{contractId}/{assetId}", - "name": "contracts_postByContractidAndAssetid", - "parameters": [ - { - "type": "object", - "properties": { - "contractId": { - "type": "string", - "description": "The ID of the contract" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset to add" - }, - "body": {} - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - }, - "additionalInfo": { - "type": "array", - "items": { - "type": "object", - "properties": { - "accountHolderGivenName": { - "type": "string" - }, - "accountHolderSurname": { - "type": "string" - }, - "accountHolderCity": { - "type": "string" - }, - "accountHolderCountry": { - "type": "string" - }, - "accountHolderAddress1": { - "type": "string" - }, - "accountHolderAddress2": { - "type": "string" - }, - "accountHolderDistrict": { - "type": "string" - }, - "accountHolderPostalCode": { - "type": "string" - }, - "abaRoutingNumber": { - "type": "string" - }, - "abaAccountNumber": { - "type": "string" - }, - "abaCountry": { - "type": "string" - }, - "iban": { - "type": "string" - }, - "ibanCity": { - "type": "string" - }, - "ibanCountry": { - "type": "string" - }, - "speiClabe": { - "type": "string" - }, - "speiName": { - "type": "string" - } - } - } - } - } - }, - "description": "Add an asset to a contract.\n\nAdds an asset to an existing contract." - }, - { - "method": "delete", - "path": "/contracts/{contractId}/{assetId}", - "name": "contracts_eraseByContractidAndAssetid", - "parameters": [ - { - "type": "object", - "properties": { - "contractId": { - "type": "string", - "minimum": 1, - "description": "The ID of the contract" - }, - "assetId": { - "type": "string", - "minimum": 1, - "x-fb-entity": "asset", - "description": "The ID of the asset to delete" - } - } - } - ], - "description": "Delete a contract asset.\n\nDeletes a contract asset by ID." - }, - { - "method": "get", - "path": "/supported_assets", - "name": "supported_assets_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "ALGO_ASSET", - "BASE_ASSET", - "BEP20", - "COMPOUND", - "ERC20", - "FIAT", - "SOL_ASSET", - "TRON_TRC20", - "XLM_ASSET", - "XDB_ASSET" - ] - }, - "contractAddress": { - "type": "string" - }, - "nativeAsset": { - "type": "string" - }, - "decimals": { - "type": "number" - } - }, - "required": [ - "id", - "name", - "type" - ] - } - }, - "description": "List all asset types supported by Fireblocks.\n\nReturns all asset types supported by Fireblocks." - }, - { - "method": "get", - "path": "/estimate_network_fee", - "name": "estimate_network_fee_get", - "parameters": [ - { - "type": "object", - "properties": { - "query": { - "type": "object", - "properties": { - "assetId": { - "type": "string", - "x-fb-entity": "asset", - "description": "The asset for which to estimate the fee" - } - }, - "required": [ - "assetId" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "low": { - "type": "object", - "properties": { - "feePerByte": { - "type": "string" - }, - "gasPrice": { - "type": "string" - }, - "networkFee": { - "type": "string" - }, - "baseFee": { - "description": "(optional) Base Fee according to EIP-1559 (ETH assets)", - "type": "string" - }, - "priorityFee": { - "description": "(optional) Priority Fee according to EIP-1559 (ETH assets)", - "type": "string" - } - } - }, - "medium": { - "type": "object", - "properties": { - "feePerByte": { - "type": "string" - }, - "gasPrice": { - "type": "string" - }, - "networkFee": { - "type": "string" - }, - "baseFee": { - "description": "(optional) Base Fee according to EIP-1559 (ETH assets)", - "type": "string" - }, - "priorityFee": { - "description": "(optional) Priority Fee according to EIP-1559 (ETH assets)", - "type": "string" - } - } - }, - "high": { - "type": "object", - "properties": { - "feePerByte": { - "type": "string" - }, - "gasPrice": { - "type": "string" - }, - "networkFee": { - "type": "string" - }, - "baseFee": { - "description": "(optional) Base Fee according to EIP-1559 (ETH assets)", - "type": "string" - }, - "priorityFee": { - "description": "(optional) Priority Fee according to EIP-1559 (ETH assets)", - "type": "string" - } - } - } - }, - "required": [ - "low", - "medium", - "high" - ] - }, - "description": "Estimate the required fee for an asset.\n\nGets the estimated required fee for an asset. For UTXO based assets, the response will contain the suggested fee per byte, for ETH/ETC based assets, the suggested gas price, and for XRP/XLM, the transaction fee." - }, - { - "method": "get", - "path": "/transactions/validate_address/{assetId}/{address}", - "name": "transactions_validate_address_getByAssetidAndAddress", - "parameters": [ - { - "type": "object", - "properties": { - "assetId": { - "type": "string", - "x-fb-entity": "asset", - "description": "The asset of the address" - }, - "address": { - "type": "string", - "description": "The address to validate" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "isValid": { - "type": "boolean" - }, - "isActive": { - "type": "boolean" - }, - "requiresTag": { - "type": "boolean" - } - } - }, - "description": "Validate destination address.\n\nChecks if an address is valid (for XRP, DOT, XLM, and EOS)." - }, - { - "method": "get", - "path": "/transactions", - "name": "transactions_get", - "parameters": [ - { - "type": "object", - "properties": { - "query": { - "type": "object", - "properties": { - "before": { - "type": "string", - "description": "Unix timestamp in milliseconds. Returns only transactions created before the specified date" - }, - "after": { - "type": "string", - "description": "Unix timestamp in milliseconds. Returns only transactions created after the specified date" - }, - "status": { - "type": "string", - "description": "You can filter by one of the statuses." - }, - "limit": { - "type": "integer", - "minimum": 1, - "default": 200, - "description": "Limits the number of results. If not provided, a limit of 200 will be used. The maximum allowed limit is 500" - }, - "sourceId": { - "type": "string", - "description": "The source ID of the transaction" - }, - "destId": { - "type": "string", - "description": "The destination ID of the transaction" - }, - "assets": { - "type": "string", - "description": "A list of assets to filter by, seperated by commas" - }, - "txHash": { - "type": "string", - "description": "Returns only results with a specified txHash" - }, - "sourceWalletId": { - "type": "string", - "description": "Returns only results where the source is a specific end user wallet" - }, - "destWalletId": { - "type": "string", - "description": "Returns only results where the destination is a specific end user wallet" - } - }, - "required": [] - } - } - } - ], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "ID of the transaction." - }, - "externalTxId": { - "type": "string", - "description": "Unique transaction ID provided by the user. Fireblocks highly recommends setting an `externalTxId` for every transaction created, to avoid submitting the same transaction twice." - }, - "status": { - "type": "string", - "description": "The primary status of the transaction. For details, see [Primary transaction statuses](https://developers.fireblocks.com/reference/primary-transaction-statuses)." - }, - "subStatus": { - "type": "string", - "description": "See [Transaction substatuses](https://developers.fireblocks.com/reference/transaction-substatuses) for the list of transaction sub statuses." - }, - "txHash": { - "type": "string", - "description": "The hash of the transaction on the blockchain.\n * This parameter exists if at least one of the following conditions is met:\n\n 1. The transaction’s source type is `UNKNOWN`, `WHITELISTED_ADDRESS`, `NETWORK_CONNECTION`, `ONE_TIME_ADDRESS`, `FIAT_ACCOUNT` or `GAS_STATION`.\n\n 2. The transaction’s source type is `VAULT` and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these statuses prior to changing to `FAILED` or `REJECTED`. In some instances, transactions in status `BROADCASTING` will include the txHash as well.\n\n 3. The transaction’s source type is `EXCHANGE_ACCOUNT` and the transaction’s destination type is `VAULT`, and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these status prior to changing to `FAILED`.\n \n\n* In addition, the following conditions must be met:\n\n 1. The asset is a crypto asset (not fiat).\n\n 2. The transaction operation is not RAW or `TYPED_MESSAGE`." - }, - "operation": { - "type": "string", - "enum": [ - "TRANSFER", - "BURN", - "CONTRACT_CALL", - "MINT", - "RAW", - "TYPED_MESSAGE", - "ENABLE_ASSET", - "STAKE", - "UNSTAKE", - "WITHDRAW", - "REDEEM_FROM_COMPOUND", - "SUPPLY_TO_COMPOUND" - ], - "description": "* `TRANSFER` - Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n* `ENABLE_ASSET` - Algorand, DigitalBits, Solana, and Stellar require an on-chain transaction to create an asset wallet and enable the deposit address. This transaction is automatically created when adding assets on these blockchains at a vault account.\n* `STAKE` - Assign assets to a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `UNSTAKE` - Remove assets from a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `WITHDRAW` - Transfer assets from a dedicated staking vault account to another address. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n\n **Note:** Fireblocks will rename this type from `WITHDRAW` to a different type name soon. There will be a 7-day notice regarding the new type name.\n\n* `SUPPLY_TO_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n* `REDEEM_FROM_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n" - }, - "note": { - "type": "string", - "description": "Custom note, not sent to the blockchain, that describes the transaction at your Fireblocks workspace." - }, - "assetId": { - "type": "string", - "description": "The ID of the asset to transfer, for `TRANSFER`, `MINT`, `BURN`, `ENABLE_ASSET`,`STAKE` ,`UNSTAKE` or `WITHDRAW` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)", - "x-fb-entity": "asset" - }, - "source": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "sourceAddress": { - "type": "string", - "description": "For account based assets only, the source address of the transaction.\n**Note:** If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the source address. In any other case, this parameter will be empty." - }, - "tag": { - "type": "string", - "description": "Source address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)." - }, - "destination": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "destinations": { - "type": "array", - "description": "The transaction’s destinations.\n**Note:** In case the transaction is sent to a single destination, the `destination` parameter is used instead of this.", - "items": { - "type": "object", - "properties": { - "destination": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "destinationAddress": { - "description": "Address where the asset was transferred." - }, - "destinationAddressDescription": { - "description": "Description of the address." - }, - "amount": { - "type": "string", - "description": "The amount to be sent to this destination." - }, - "amountUSD": { - "type": "string", - "description": "The USD value of the requested amount." - }, - "amlScreeningResult": { - "type": "object", - "description": "The result of the AML screening.", - "properties": { - "provider": { - "type": "string" - }, - "payload": { - "type": "object" - } - } - }, - "customerRefId": { - "description": "The ID for AML providers to associate the owner of funds with transactions." - }, - "authorizationInfo": { - "type": "object", - "description": "The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)", - "properties": { - "allowOperatorAsAuthorizer": { - "type": "boolean" - }, - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ] - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "th": { - "type": "number" - }, - "users": { - "type": "object", - "additionalProperties": { - "type": "string", - "enum": [ - "PENDING_AUTHORIZATION", - "APPROVED", - "REJECTED", - "NA" - ] - } - } - } - } - } - } - } - } - } - }, - "destinationAddress": { - "type": "string", - "description": "Address where the asset were transferred.\nNotes:\n - For [Multi destination transactions](https://support.fireblocks.io/hc/en-us/articles/360018447980-Multi-destination-transactions), this parameter will be empty. In this case, you should refer to the destinations field.\n - If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the destination address. In any other case, this parameter will be empty." - }, - "destinationAddressDescription": { - "type": "string", - "description": "Description of the address." - }, - "destinationTag": { - "type": "string", - "description": "Destination address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)." - }, - "contractCallDecodedData": { - "description": "Decoded data for `CONTRACT_CALL` operations. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for setting this parameter's value.", - "type": "object", - "properties": { - "contractName": { - "type": "string" - }, - "functionCalls": { - "type": "array", - "items": { - "type": "object" - } - } - } - }, - "amountInfo": { - "type": "object", - "description": "The details of the requested amount to transfer.", - "properties": { - "amount": { - "description": "If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount.", - "type": "string" - }, - "requestedAmount": { - "description": "The amount requested by the user.", - "type": "string" - }, - "netAmount": { - "description": "The net amount of the transaction, after fee deduction.", - "type": "string" - }, - "amountUSD": { - "description": "The USD value of the requested amount.", - "type": "string" - } - } - }, - "treatAsGrossAmount": { - "type": "boolean", - "description": "For transactions initiated via this Fireblocks workspace, when set to `true`, the fee is deducted from the requested amount.\n\n**Note**: This parameter can only be considered if a transaction's asset is a base asset, such as ETH or MATIC. If the asset can't be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account." - }, - "feeInfo": { - "type": "object", - "description": "Details of the transaction's fee.", - "properties": { - "networkFee": { - "description": "The fee paid to the network", - "type": "string" - }, - "serviceFee": { - "description": "The total fee deducted by the exchange from the actual requested amount (serviceFee = amount - netAmount)", - "type": "string" - }, - "gasPrice": { - "type": "string" - } - } - }, - "feeCurrency": { - "type": "string", - "description": "The asset which was withdrawn to pay the transaction fee, for example ETH for EVM-based blockchains, BTC for Tether Omni." - }, - "networkRecords": { - "type": "array", - "description": "In case a single transaction resulted with multiple transfers, for example a result of a contract call, then this parameter specifies each transfer that took place on the blockchain. In case of a single transfer transaction, this parameter is empty.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "destination": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "txHash": { - "type": "string" - }, - "networkFee": { - "type": "string" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset" - }, - "netAmount": { - "description": "The net amount of the transaction, after fee deduction", - "type": "string" - }, - "isDropped": { - "type": "boolean" - }, - "type": { - "type": "string" - }, - "destinationAddress": { - "type": "string" - }, - "sourceAddress": { - "type": "string" - }, - "amountUSD": { - "type": "string" - }, - "index": { - "type": "number" - }, - "rewardInfo": { - "type": "object", - "description": "This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.", - "properties": { - "srcRewards": { - "type": "string" - }, - "destRewards": { - "type": "string" - } - } - } - } - } - }, - "createdAt": { - "type": "number", - "description": "The transaction’s creation date and time, in unix timestamp." - }, - "lastUpdated": { - "type": "number", - "description": "The transaction’s last update date and time, in unix timestamp." - }, - "createdBy": { - "type": "string", - "description": "User ID of the initiator of the transaction." - }, - "signedBy": { - "type": "array", - "description": "User ID’s of the signers of the transaction.", - "items": { - "type": "string" - } - }, - "rejectedBy": { - "type": "string", - "description": "User ID of the user that rejected the transaction (in case it was rejected)." - }, - "authorizationInfo": { - "type": "object", - "description": "The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)", - "properties": { - "allowOperatorAsAuthorizer": { - "type": "boolean" - }, - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ] - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "th": { - "type": "number" - }, - "users": { - "type": "object", - "additionalProperties": { - "type": "string", - "enum": [ - "PENDING_AUTHORIZATION", - "APPROVED", - "REJECTED", - "NA" - ] - } - } - } - } - } - } - }, - "exchangeTxId": { - "type": "string", - "description": "If the transaction originated from an exchange, this is the ID of this transaction at the exchange." - }, - "customerRefId": { - "type": "string", - "description": "The ID for AML providers to associate the owner of funds with transactions." - }, - "amlScreeningResult": { - "type": "object", - "description": "The result of the AML screening.", - "properties": { - "provider": { - "type": "string" - }, - "payload": { - "type": "object" - } - } - }, - "extraParameters": { - "type": "object", - "properties": {}, - "description": "Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n" - }, - "signedMessages": { - "type": "object", - "description": "A list of signed messages returned for raw signing.", - "properties": { - "content": { - "type": "string" - }, - "algorithm": { - "type": "string", - "enum": [ - "MPC_ECDSA_SECP256K1", - "MPC_EDDSA_ED25519" - ] - }, - "derivationPath": { - "type": "array", - "items": { - "type": "number" - } - }, - "signature": { - "type": "object", - "properties": { - "fullSig": { - "type": "string" - }, - "r": { - "type": "string" - }, - "s": { - "type": "string" - }, - "v": { - "type": "number" - } - } - }, - "publicKey": { - "type": "string" - } - } - }, - "numOfConfirmations": { - "type": "number", - "description": "The number of confirmations of the transaction. The number will increase until the transaction will be considered completed according to the confirmation policy." - }, - "blockInfo": { - "type": "object", - "description": "The block hash and height of the block that this transaction was mined in.\n **Note**: If an outgoing transaction uses the destinations object with more than one value in the array, blockHash is set to null.", - "properties": { - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - } - } - }, - "index": { - "type": "number", - "description": "For UTXO based assets this is the vOut, for Ethereum based, this is the index of the event of the contract call.\n **Note:** This field is not returned if a transaction uses the `destinations` object with more than one value." - }, - "rewardInfo": { - "type": "object", - "description": "This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.", - "properties": { - "srcRewards": { - "type": "string" - }, - "destRewards": { - "type": "string" - } - } - }, - "systemMessages": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "WARN", - "BLOCK" - ] - }, - "message": { - "type": "string", - "description": "A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.", - "example": "Slow transaction processing. Outgoing transactions might be stuck." - } - } - }, - "addressType": { - "type": "string", - "enum": [ - "WHITELISTED", - "ONE_TIME" - ] - }, - "requestedAmount": { - "description": "The amount requested by the user. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "amount": { - "description": "If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "netAmount": { - "description": "The net amount of the transaction, after fee deduction. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "amountUSD": { - "description": "The USD value of the requested amount. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "nullable": true, - "deprecated": true - }, - "serviceFee": { - "description": "The total fee deducted by the exchange from the actual requested amount (`serviceFee` = `amount` - `netAmount`). Deprecated - please use the `feeInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "fee": { - "description": "Deprecated - please use the `feeInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "networkFee": { - "description": "The fee paid to the network. Deprecated - please use the `feeInfo` field for accuracy.", - "type": "number", - "deprecated": true - } - } - } - }, - "description": "List transaction history.\n\nLists the transaction history for your workspace." - }, - { - "method": "post", - "path": "/transactions", - "name": "transactions_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "operation": { - "type": "string", - "enum": [ - "TRANSFER", - "BURN", - "CONTRACT_CALL", - "MINT", - "RAW", - "TYPED_MESSAGE" - ], - "description": "* `TRANSFER` - The default value for an operation. Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n" - }, - "note": { - "type": "string", - "description": "Custom note, not sent to the blockchain, to describe the transaction at your Fireblocks workspace.", - "example": "Ticket 123" - }, - "externalTxId": { - "type": "string", - "description": "An optional but highly recommended parameter. Fireblocks will reject future transactions with same ID. \n \nYou should set this to a unique ID representing the transaction, to avoid submitting the same transaction twice. This helps with cases where submitting the transaction responds with an error code due to Internet interruptions, but the transaction was actually sent and processed. To validate whether a transaction has been processed, [Find a specific transaction by external transaction ID](https://developers.fireblocks.com/reference/get_transactions-external-tx-id-externaltxid).\n \nThere is no specific format required for this parameter.", - "example": "00000000-0000-0000-0000-000000000000" - }, - "assetId": { - "type": "string", - "description": "The ID of the asset to transfer, for `TRANSFER`, `MINT` or `BURN` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)", - "x-fb-entity": "asset", - "example": "ETH" - }, - "source": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "VAULT_ACCOUNT", - "EXCHANGE_ACCOUNT", - "INTERNAL_WALLET", - "EXTERNAL_WALLET", - "NETWORK_CONNECTION", - "FIAT_ACCOUNT", - "COMPOUND", - "GAS_STATION", - "ONE_TIME_ADDRESS", - "UNKNOWN", - "END_USER_WALLET" - ] - }, - "subType": { - "type": "string", - "enum": [ - "BINANCE", - "BINANCEUS", - "BITFINEX", - "BITHUMB", - "BITMEX", - "BITSO", - "BITSTAMP", - "BITTREX", - "BLINC", - "BYBIT", - "CIRCLE", - "COINBASEEXCHANGE", - "COINBASEPRO", - "COINMETRO", - "COINSPRO", - "CRYPTOCOM", - "DERIBIT", - "GEMINI", - "HITBTC", - "HUOBI", - "INDEPENDENTRESERVE", - "KORBIT", - "KRAKEN", - "KRAKENINTL", - "KUCOIN", - "LIQUID", - "OKCOIN", - "OKEX", - "PAXOS", - "POLONIEX", - "External", - "Internal" - ] - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "walletId": { - "type": "string", - "format": "uuid" - } - }, - "required": [ - "type" - ] - }, - "destination": {}, - "destinations": { - "type": "array", - "description": "For UTXO based blockchains, you can send a single transaction to multiple destinations.", - "items": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "destination": {} - } - } - }, - "amount": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "0.02" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 0.02 - } - ], - "description": "For `TRANSFER` operations, the requested amount to transfer, in the asset’s unit. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "treatAsGrossAmount": { - "type": "boolean", - "description": "\"When set to `true`, the fee will be deducted from the requested amount.\"\n\n**Note**: This parameter can only be considered if a transaction’s asset is a base asset, such as ETH or MATIC. If the asset can’t be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account." - }, - "forceSweep": { - "type": "boolean", - "description": "For Polkadot, Kusama and Westend transactions only. When set to true, Fireblocks will empty the asset wallet.\n\n **Note:** If set to true when the source account is exactly 1 DOT, the transaction will fail. Any amount more or less than 1 DOT succeeds. This is a Polkadot blockchain limitation." - }, - "feeLevel": { - "type": "string", - "enum": [ - "LOW", - "MEDIUM", - "HIGH" - ], - "description": "For UTXO or EVM-based blockchains only. Defines the blockchain fee level which will be payed for the transaction. Alternatively, specific fee estimation parameters exist below." - }, - "fee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For UTXO-based blockchains, the fee per bytes in the asset’s smallest unit (Satoshi, Latoshi, etc.). For Ripple, the fee for the transaction. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "priorityFee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "2" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 2 - } - ], - "description": "For Ethereum-based blockchains only, the fee for EIP-1559 transaction pricing mechanism. Value is in Gwei. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "failOnLowFee": { - "type": "boolean", - "description": "When set to `true`, in case the current `MEDIUM` fee level is higher than the one specified in the transaction, the transaction will fail to avoid getting stuck with no confirmations." - }, - "maxFee": { - "description": "The maximum fee (gas price or fee per byte) that should be payed for the transaction. In case the current value of the requested `feeLevel` is higher than this requested maximum fee. Represented by a numeric string for accurate precision.", - "type": "string", - "example": "120" - }, - "gasLimit": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "21000" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 21000 - } - ], - "description": "For EVM-based blockchains only. Units of gas required to process the transaction. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "gasPrice": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For non-EIP-1559, EVM-based transactions. Price per gas unit (in Ethereum this is specified in Gwei). Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "networkFee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For EVM-based blockchains only. The total transaction fee in the blockchain’s largest unit. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated. - The transaction blockchain fee.\n- For Ethereum, you can't pass gasPrice, gasLimit and networkFee all together.\n- A numeric value representation is required." - }, - "replaceTxByHash": { - "type": "string", - "description": "For EVM-based blockchains only. In case a transaction is stuck, specify the hash of the stuck transaction to replace it by this transaction with a higher fee, or to replace it with this transaction with a zero fee and drop it from the blockchain.", - "example": "00000000-0000-0000-0000-000000000000" - }, - "extraParameters": { - "type": "object", - "properties": {}, - "description": "Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n" - }, - "customerRefId": { - "type": "string", - "description": "The ID for AML providers to associate the owner of funds with transactions.", - "example": "abcdef" - }, - "autoStaking": { - "type": "boolean", - "description": "This feature is no longer supported." - }, - "networkStaking": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "This feature is no longer supported." - }, - "cpuStaking": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "This feature is no longer supported." - } - } - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The ID of the transaction." - }, - "status": { - "type": "string", - "description": "The primary status of the transaction. For details, see [Primary transaction statuses.] (https://developers.fireblocks.com/reference/primary-transaction-statuses)" - }, - "systemMessages": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "WARN", - "BLOCK" - ] - }, - "message": { - "type": "string", - "description": "A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.", - "example": "Slow transaction processing. Outgoing transactions might be stuck." - } - } - } - } - }, - "description": "Create a new transaction.\n\nCreates a new transaction." - }, - { - "method": "post", - "path": "/transactions/estimate_fee", - "name": "transactions_estimate_fee_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "operation": { - "type": "string", - "enum": [ - "TRANSFER", - "BURN", - "CONTRACT_CALL", - "MINT", - "RAW", - "TYPED_MESSAGE" - ], - "description": "* `TRANSFER` - The default value for an operation. Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n" - }, - "note": { - "type": "string", - "description": "Custom note, not sent to the blockchain, to describe the transaction at your Fireblocks workspace.", - "example": "Ticket 123" - }, - "externalTxId": { - "type": "string", - "description": "An optional but highly recommended parameter. Fireblocks will reject future transactions with same ID. \n \nYou should set this to a unique ID representing the transaction, to avoid submitting the same transaction twice. This helps with cases where submitting the transaction responds with an error code due to Internet interruptions, but the transaction was actually sent and processed. To validate whether a transaction has been processed, [Find a specific transaction by external transaction ID](https://developers.fireblocks.com/reference/get_transactions-external-tx-id-externaltxid).\n \nThere is no specific format required for this parameter.", - "example": "00000000-0000-0000-0000-000000000000" - }, - "assetId": { - "type": "string", - "description": "The ID of the asset to transfer, for `TRANSFER`, `MINT` or `BURN` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)", - "x-fb-entity": "asset", - "example": "ETH" - }, - "source": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "VAULT_ACCOUNT", - "EXCHANGE_ACCOUNT", - "INTERNAL_WALLET", - "EXTERNAL_WALLET", - "NETWORK_CONNECTION", - "FIAT_ACCOUNT", - "COMPOUND", - "GAS_STATION", - "ONE_TIME_ADDRESS", - "UNKNOWN", - "END_USER_WALLET" - ] - }, - "subType": { - "type": "string", - "enum": [ - "BINANCE", - "BINANCEUS", - "BITFINEX", - "BITHUMB", - "BITMEX", - "BITSO", - "BITSTAMP", - "BITTREX", - "BLINC", - "BYBIT", - "CIRCLE", - "COINBASEEXCHANGE", - "COINBASEPRO", - "COINMETRO", - "COINSPRO", - "CRYPTOCOM", - "DERIBIT", - "GEMINI", - "HITBTC", - "HUOBI", - "INDEPENDENTRESERVE", - "KORBIT", - "KRAKEN", - "KRAKENINTL", - "KUCOIN", - "LIQUID", - "OKCOIN", - "OKEX", - "PAXOS", - "POLONIEX", - "External", - "Internal" - ] - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "walletId": { - "type": "string", - "format": "uuid" - } - }, - "required": [ - "type" - ] - }, - "destination": {}, - "destinations": { - "type": "array", - "description": "For UTXO based blockchains, you can send a single transaction to multiple destinations.", - "items": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "destination": {} - } - } - }, - "amount": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "0.02" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 0.02 - } - ], - "description": "For `TRANSFER` operations, the requested amount to transfer, in the asset’s unit. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "treatAsGrossAmount": { - "type": "boolean", - "description": "\"When set to `true`, the fee will be deducted from the requested amount.\"\n\n**Note**: This parameter can only be considered if a transaction’s asset is a base asset, such as ETH or MATIC. If the asset can’t be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account." - }, - "forceSweep": { - "type": "boolean", - "description": "For Polkadot, Kusama and Westend transactions only. When set to true, Fireblocks will empty the asset wallet.\n\n **Note:** If set to true when the source account is exactly 1 DOT, the transaction will fail. Any amount more or less than 1 DOT succeeds. This is a Polkadot blockchain limitation." - }, - "feeLevel": { - "type": "string", - "enum": [ - "LOW", - "MEDIUM", - "HIGH" - ], - "description": "For UTXO or EVM-based blockchains only. Defines the blockchain fee level which will be payed for the transaction. Alternatively, specific fee estimation parameters exist below." - }, - "fee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For UTXO-based blockchains, the fee per bytes in the asset’s smallest unit (Satoshi, Latoshi, etc.). For Ripple, the fee for the transaction. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "priorityFee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "2" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 2 - } - ], - "description": "For Ethereum-based blockchains only, the fee for EIP-1559 transaction pricing mechanism. Value is in Gwei. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "failOnLowFee": { - "type": "boolean", - "description": "When set to `true`, in case the current `MEDIUM` fee level is higher than the one specified in the transaction, the transaction will fail to avoid getting stuck with no confirmations." - }, - "maxFee": { - "description": "The maximum fee (gas price or fee per byte) that should be payed for the transaction. In case the current value of the requested `feeLevel` is higher than this requested maximum fee. Represented by a numeric string for accurate precision.", - "type": "string", - "example": "120" - }, - "gasLimit": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "21000" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 21000 - } - ], - "description": "For EVM-based blockchains only. Units of gas required to process the transaction. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "gasPrice": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For non-EIP-1559, EVM-based transactions. Price per gas unit (in Ethereum this is specified in Gwei). Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "networkFee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For EVM-based blockchains only. The total transaction fee in the blockchain’s largest unit. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated. - The transaction blockchain fee.\n- For Ethereum, you can't pass gasPrice, gasLimit and networkFee all together.\n- A numeric value representation is required." - }, - "replaceTxByHash": { - "type": "string", - "description": "For EVM-based blockchains only. In case a transaction is stuck, specify the hash of the stuck transaction to replace it by this transaction with a higher fee, or to replace it with this transaction with a zero fee and drop it from the blockchain.", - "example": "00000000-0000-0000-0000-000000000000" - }, - "extraParameters": { - "type": "object", - "properties": {}, - "description": "Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n" - }, - "customerRefId": { - "type": "string", - "description": "The ID for AML providers to associate the owner of funds with transactions.", - "example": "abcdef" - }, - "autoStaking": { - "type": "boolean", - "description": "This feature is no longer supported." - }, - "networkStaking": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "This feature is no longer supported." - }, - "cpuStaking": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "This feature is no longer supported." - } - } - } - } - } - ], - "output": { - "type": "object", - "properties": { - "low": { - "type": "object", - "properties": { - "feePerByte": { - "type": "string" - }, - "gasPrice": { - "type": "string" - }, - "gasLimit": { - "type": "string" - }, - "networkFee": { - "type": "string" - }, - "baseFee": { - "description": "(optional) Base Fee according to EIP-1559 (ETH assets)", - "type": "string" - }, - "priorityFee": { - "description": "(optional) Priority Fee according to EIP-1559 (ETH assets)", - "type": "string" - } - } - }, - "medium": { - "type": "object", - "properties": { - "feePerByte": { - "type": "string" - }, - "gasPrice": { - "type": "string" - }, - "gasLimit": { - "type": "string" - }, - "networkFee": { - "type": "string" - }, - "baseFee": { - "description": "(optional) Base Fee according to EIP-1559 (ETH assets)", - "type": "string" - }, - "priorityFee": { - "description": "(optional) Priority Fee according to EIP-1559 (ETH assets)", - "type": "string" - } - } - }, - "high": { - "type": "object", - "properties": { - "feePerByte": { - "type": "string" - }, - "gasPrice": { - "type": "string" - }, - "gasLimit": { - "type": "string" - }, - "networkFee": { - "type": "string" - }, - "baseFee": { - "description": "(optional) Base Fee according to EIP-1559 (ETH assets)", - "type": "string" - }, - "priorityFee": { - "description": "(optional) Priority Fee according to EIP-1559 (ETH assets)", - "type": "string" - } - } - } - }, - "required": [ - "low", - "medium", - "high" - ] - }, - "description": "Estimate transaction fee.\n\nEstimates the transaction fee for a transaction request.\n* Note: Supports all Fireblocks assets except ZCash (ZEC)." - }, - { - "method": "get", - "path": "/transactions/{txId}", - "name": "transactions_getByTxid", - "parameters": [ - { - "type": "object", - "properties": { - "txId": { - "type": "string", - "minimum": 1, - "description": "The ID of the transaction to return" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "ID of the transaction." - }, - "externalTxId": { - "type": "string", - "description": "Unique transaction ID provided by the user. Fireblocks highly recommends setting an `externalTxId` for every transaction created, to avoid submitting the same transaction twice." - }, - "status": { - "type": "string", - "description": "The primary status of the transaction. For details, see [Primary transaction statuses](https://developers.fireblocks.com/reference/primary-transaction-statuses)." - }, - "subStatus": { - "type": "string", - "description": "See [Transaction substatuses](https://developers.fireblocks.com/reference/transaction-substatuses) for the list of transaction sub statuses." - }, - "txHash": { - "type": "string", - "description": "The hash of the transaction on the blockchain.\n * This parameter exists if at least one of the following conditions is met:\n\n 1. The transaction’s source type is `UNKNOWN`, `WHITELISTED_ADDRESS`, `NETWORK_CONNECTION`, `ONE_TIME_ADDRESS`, `FIAT_ACCOUNT` or `GAS_STATION`.\n\n 2. The transaction’s source type is `VAULT` and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these statuses prior to changing to `FAILED` or `REJECTED`. In some instances, transactions in status `BROADCASTING` will include the txHash as well.\n\n 3. The transaction’s source type is `EXCHANGE_ACCOUNT` and the transaction’s destination type is `VAULT`, and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these status prior to changing to `FAILED`.\n \n\n* In addition, the following conditions must be met:\n\n 1. The asset is a crypto asset (not fiat).\n\n 2. The transaction operation is not RAW or `TYPED_MESSAGE`." - }, - "operation": { - "type": "string", - "enum": [ - "TRANSFER", - "BURN", - "CONTRACT_CALL", - "MINT", - "RAW", - "TYPED_MESSAGE", - "ENABLE_ASSET", - "STAKE", - "UNSTAKE", - "WITHDRAW", - "REDEEM_FROM_COMPOUND", - "SUPPLY_TO_COMPOUND" - ], - "description": "* `TRANSFER` - Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n* `ENABLE_ASSET` - Algorand, DigitalBits, Solana, and Stellar require an on-chain transaction to create an asset wallet and enable the deposit address. This transaction is automatically created when adding assets on these blockchains at a vault account.\n* `STAKE` - Assign assets to a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `UNSTAKE` - Remove assets from a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `WITHDRAW` - Transfer assets from a dedicated staking vault account to another address. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n\n **Note:** Fireblocks will rename this type from `WITHDRAW` to a different type name soon. There will be a 7-day notice regarding the new type name.\n\n* `SUPPLY_TO_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n* `REDEEM_FROM_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n" - }, - "note": { - "type": "string", - "description": "Custom note, not sent to the blockchain, that describes the transaction at your Fireblocks workspace." - }, - "assetId": { - "type": "string", - "description": "The ID of the asset to transfer, for `TRANSFER`, `MINT`, `BURN`, `ENABLE_ASSET`,`STAKE` ,`UNSTAKE` or `WITHDRAW` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)", - "x-fb-entity": "asset" - }, - "source": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "sourceAddress": { - "type": "string", - "description": "For account based assets only, the source address of the transaction.\n**Note:** If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the source address. In any other case, this parameter will be empty." - }, - "tag": { - "type": "string", - "description": "Source address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)." - }, - "destination": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "destinations": { - "type": "array", - "description": "The transaction’s destinations.\n**Note:** In case the transaction is sent to a single destination, the `destination` parameter is used instead of this.", - "items": { - "type": "object", - "properties": { - "destination": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "destinationAddress": { - "description": "Address where the asset was transferred." - }, - "destinationAddressDescription": { - "description": "Description of the address." - }, - "amount": { - "type": "string", - "description": "The amount to be sent to this destination." - }, - "amountUSD": { - "type": "string", - "description": "The USD value of the requested amount." - }, - "amlScreeningResult": { - "type": "object", - "description": "The result of the AML screening.", - "properties": { - "provider": { - "type": "string" - }, - "payload": { - "type": "object" - } - } - }, - "customerRefId": { - "description": "The ID for AML providers to associate the owner of funds with transactions." - }, - "authorizationInfo": { - "type": "object", - "description": "The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)", - "properties": { - "allowOperatorAsAuthorizer": { - "type": "boolean" - }, - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ] - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "th": { - "type": "number" - }, - "users": { - "type": "object", - "additionalProperties": { - "type": "string", - "enum": [ - "PENDING_AUTHORIZATION", - "APPROVED", - "REJECTED", - "NA" - ] - } - } - } - } - } - } - } - } - } - }, - "destinationAddress": { - "type": "string", - "description": "Address where the asset were transferred.\nNotes:\n - For [Multi destination transactions](https://support.fireblocks.io/hc/en-us/articles/360018447980-Multi-destination-transactions), this parameter will be empty. In this case, you should refer to the destinations field.\n - If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the destination address. In any other case, this parameter will be empty." - }, - "destinationAddressDescription": { - "type": "string", - "description": "Description of the address." - }, - "destinationTag": { - "type": "string", - "description": "Destination address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)." - }, - "contractCallDecodedData": { - "description": "Decoded data for `CONTRACT_CALL` operations. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for setting this parameter's value.", - "type": "object", - "properties": { - "contractName": { - "type": "string" - }, - "functionCalls": { - "type": "array", - "items": { - "type": "object" - } - } - } - }, - "amountInfo": { - "type": "object", - "description": "The details of the requested amount to transfer.", - "properties": { - "amount": { - "description": "If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount.", - "type": "string" - }, - "requestedAmount": { - "description": "The amount requested by the user.", - "type": "string" - }, - "netAmount": { - "description": "The net amount of the transaction, after fee deduction.", - "type": "string" - }, - "amountUSD": { - "description": "The USD value of the requested amount.", - "type": "string" - } - } - }, - "treatAsGrossAmount": { - "type": "boolean", - "description": "For transactions initiated via this Fireblocks workspace, when set to `true`, the fee is deducted from the requested amount.\n\n**Note**: This parameter can only be considered if a transaction's asset is a base asset, such as ETH or MATIC. If the asset can't be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account." - }, - "feeInfo": { - "type": "object", - "description": "Details of the transaction's fee.", - "properties": { - "networkFee": { - "description": "The fee paid to the network", - "type": "string" - }, - "serviceFee": { - "description": "The total fee deducted by the exchange from the actual requested amount (serviceFee = amount - netAmount)", - "type": "string" - }, - "gasPrice": { - "type": "string" - } - } - }, - "feeCurrency": { - "type": "string", - "description": "The asset which was withdrawn to pay the transaction fee, for example ETH for EVM-based blockchains, BTC for Tether Omni." - }, - "networkRecords": { - "type": "array", - "description": "In case a single transaction resulted with multiple transfers, for example a result of a contract call, then this parameter specifies each transfer that took place on the blockchain. In case of a single transfer transaction, this parameter is empty.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "destination": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "txHash": { - "type": "string" - }, - "networkFee": { - "type": "string" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset" - }, - "netAmount": { - "description": "The net amount of the transaction, after fee deduction", - "type": "string" - }, - "isDropped": { - "type": "boolean" - }, - "type": { - "type": "string" - }, - "destinationAddress": { - "type": "string" - }, - "sourceAddress": { - "type": "string" - }, - "amountUSD": { - "type": "string" - }, - "index": { - "type": "number" - }, - "rewardInfo": { - "type": "object", - "description": "This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.", - "properties": { - "srcRewards": { - "type": "string" - }, - "destRewards": { - "type": "string" - } - } - } - } - } - }, - "createdAt": { - "type": "number", - "description": "The transaction’s creation date and time, in unix timestamp." - }, - "lastUpdated": { - "type": "number", - "description": "The transaction’s last update date and time, in unix timestamp." - }, - "createdBy": { - "type": "string", - "description": "User ID of the initiator of the transaction." - }, - "signedBy": { - "type": "array", - "description": "User ID’s of the signers of the transaction.", - "items": { - "type": "string" - } - }, - "rejectedBy": { - "type": "string", - "description": "User ID of the user that rejected the transaction (in case it was rejected)." - }, - "authorizationInfo": { - "type": "object", - "description": "The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)", - "properties": { - "allowOperatorAsAuthorizer": { - "type": "boolean" - }, - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ] - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "th": { - "type": "number" - }, - "users": { - "type": "object", - "additionalProperties": { - "type": "string", - "enum": [ - "PENDING_AUTHORIZATION", - "APPROVED", - "REJECTED", - "NA" - ] - } - } - } - } - } - } - }, - "exchangeTxId": { - "type": "string", - "description": "If the transaction originated from an exchange, this is the ID of this transaction at the exchange." - }, - "customerRefId": { - "type": "string", - "description": "The ID for AML providers to associate the owner of funds with transactions." - }, - "amlScreeningResult": { - "type": "object", - "description": "The result of the AML screening.", - "properties": { - "provider": { - "type": "string" - }, - "payload": { - "type": "object" - } - } - }, - "extraParameters": { - "type": "object", - "properties": {}, - "description": "Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n" - }, - "signedMessages": { - "type": "object", - "description": "A list of signed messages returned for raw signing.", - "properties": { - "content": { - "type": "string" - }, - "algorithm": { - "type": "string", - "enum": [ - "MPC_ECDSA_SECP256K1", - "MPC_EDDSA_ED25519" - ] - }, - "derivationPath": { - "type": "array", - "items": { - "type": "number" - } - }, - "signature": { - "type": "object", - "properties": { - "fullSig": { - "type": "string" - }, - "r": { - "type": "string" - }, - "s": { - "type": "string" - }, - "v": { - "type": "number" - } - } - }, - "publicKey": { - "type": "string" - } - } - }, - "numOfConfirmations": { - "type": "number", - "description": "The number of confirmations of the transaction. The number will increase until the transaction will be considered completed according to the confirmation policy." - }, - "blockInfo": { - "type": "object", - "description": "The block hash and height of the block that this transaction was mined in.\n **Note**: If an outgoing transaction uses the destinations object with more than one value in the array, blockHash is set to null.", - "properties": { - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - } - } - }, - "index": { - "type": "number", - "description": "For UTXO based assets this is the vOut, for Ethereum based, this is the index of the event of the contract call.\n **Note:** This field is not returned if a transaction uses the `destinations` object with more than one value." - }, - "rewardInfo": { - "type": "object", - "description": "This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.", - "properties": { - "srcRewards": { - "type": "string" - }, - "destRewards": { - "type": "string" - } - } - }, - "systemMessages": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "WARN", - "BLOCK" - ] - }, - "message": { - "type": "string", - "description": "A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.", - "example": "Slow transaction processing. Outgoing transactions might be stuck." - } - } - }, - "addressType": { - "type": "string", - "enum": [ - "WHITELISTED", - "ONE_TIME" - ] - }, - "requestedAmount": { - "description": "The amount requested by the user. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "amount": { - "description": "If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "netAmount": { - "description": "The net amount of the transaction, after fee deduction. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "amountUSD": { - "description": "The USD value of the requested amount. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "nullable": true, - "deprecated": true - }, - "serviceFee": { - "description": "The total fee deducted by the exchange from the actual requested amount (`serviceFee` = `amount` - `netAmount`). Deprecated - please use the `feeInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "fee": { - "description": "Deprecated - please use the `feeInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "networkFee": { - "description": "The fee paid to the network. Deprecated - please use the `feeInfo` field for accuracy.", - "type": "number", - "deprecated": true - } - } - }, - "description": "Find a specific transaction by Fireblocks transaction ID.\n\nReturns a transaction by ID." - }, - { - "method": "get", - "path": "/transactions/external_tx_id/{externalTxId}/", - "name": "transactions_external_tx_id_getByExternaltxid", - "parameters": [ - { - "type": "object", - "properties": { - "externalTxId": { - "type": "string", - "minimum": 1, - "description": "The external ID of the transaction to return" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "ID of the transaction." - }, - "externalTxId": { - "type": "string", - "description": "Unique transaction ID provided by the user. Fireblocks highly recommends setting an `externalTxId` for every transaction created, to avoid submitting the same transaction twice." - }, - "status": { - "type": "string", - "description": "The primary status of the transaction. For details, see [Primary transaction statuses](https://developers.fireblocks.com/reference/primary-transaction-statuses)." - }, - "subStatus": { - "type": "string", - "description": "See [Transaction substatuses](https://developers.fireblocks.com/reference/transaction-substatuses) for the list of transaction sub statuses." - }, - "txHash": { - "type": "string", - "description": "The hash of the transaction on the blockchain.\n * This parameter exists if at least one of the following conditions is met:\n\n 1. The transaction’s source type is `UNKNOWN`, `WHITELISTED_ADDRESS`, `NETWORK_CONNECTION`, `ONE_TIME_ADDRESS`, `FIAT_ACCOUNT` or `GAS_STATION`.\n\n 2. The transaction’s source type is `VAULT` and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these statuses prior to changing to `FAILED` or `REJECTED`. In some instances, transactions in status `BROADCASTING` will include the txHash as well.\n\n 3. The transaction’s source type is `EXCHANGE_ACCOUNT` and the transaction’s destination type is `VAULT`, and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these status prior to changing to `FAILED`.\n \n\n* In addition, the following conditions must be met:\n\n 1. The asset is a crypto asset (not fiat).\n\n 2. The transaction operation is not RAW or `TYPED_MESSAGE`." - }, - "operation": { - "type": "string", - "enum": [ - "TRANSFER", - "BURN", - "CONTRACT_CALL", - "MINT", - "RAW", - "TYPED_MESSAGE", - "ENABLE_ASSET", - "STAKE", - "UNSTAKE", - "WITHDRAW", - "REDEEM_FROM_COMPOUND", - "SUPPLY_TO_COMPOUND" - ], - "description": "* `TRANSFER` - Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n* `ENABLE_ASSET` - Algorand, DigitalBits, Solana, and Stellar require an on-chain transaction to create an asset wallet and enable the deposit address. This transaction is automatically created when adding assets on these blockchains at a vault account.\n* `STAKE` - Assign assets to a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `UNSTAKE` - Remove assets from a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `WITHDRAW` - Transfer assets from a dedicated staking vault account to another address. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n\n **Note:** Fireblocks will rename this type from `WITHDRAW` to a different type name soon. There will be a 7-day notice regarding the new type name.\n\n* `SUPPLY_TO_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n* `REDEEM_FROM_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n" - }, - "note": { - "type": "string", - "description": "Custom note, not sent to the blockchain, that describes the transaction at your Fireblocks workspace." - }, - "assetId": { - "type": "string", - "description": "The ID of the asset to transfer, for `TRANSFER`, `MINT`, `BURN`, `ENABLE_ASSET`,`STAKE` ,`UNSTAKE` or `WITHDRAW` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)", - "x-fb-entity": "asset" - }, - "source": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "sourceAddress": { - "type": "string", - "description": "For account based assets only, the source address of the transaction.\n**Note:** If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the source address. In any other case, this parameter will be empty." - }, - "tag": { - "type": "string", - "description": "Source address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)." - }, - "destination": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "destinations": { - "type": "array", - "description": "The transaction’s destinations.\n**Note:** In case the transaction is sent to a single destination, the `destination` parameter is used instead of this.", - "items": { - "type": "object", - "properties": { - "destination": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "destinationAddress": { - "description": "Address where the asset was transferred." - }, - "destinationAddressDescription": { - "description": "Description of the address." - }, - "amount": { - "type": "string", - "description": "The amount to be sent to this destination." - }, - "amountUSD": { - "type": "string", - "description": "The USD value of the requested amount." - }, - "amlScreeningResult": { - "type": "object", - "description": "The result of the AML screening.", - "properties": { - "provider": { - "type": "string" - }, - "payload": { - "type": "object" - } - } - }, - "customerRefId": { - "description": "The ID for AML providers to associate the owner of funds with transactions." - }, - "authorizationInfo": { - "type": "object", - "description": "The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)", - "properties": { - "allowOperatorAsAuthorizer": { - "type": "boolean" - }, - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ] - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "th": { - "type": "number" - }, - "users": { - "type": "object", - "additionalProperties": { - "type": "string", - "enum": [ - "PENDING_AUTHORIZATION", - "APPROVED", - "REJECTED", - "NA" - ] - } - } - } - } - } - } - } - } - } - }, - "destinationAddress": { - "type": "string", - "description": "Address where the asset were transferred.\nNotes:\n - For [Multi destination transactions](https://support.fireblocks.io/hc/en-us/articles/360018447980-Multi-destination-transactions), this parameter will be empty. In this case, you should refer to the destinations field.\n - If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the destination address. In any other case, this parameter will be empty." - }, - "destinationAddressDescription": { - "type": "string", - "description": "Description of the address." - }, - "destinationTag": { - "type": "string", - "description": "Destination address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)." - }, - "contractCallDecodedData": { - "description": "Decoded data for `CONTRACT_CALL` operations. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for setting this parameter's value.", - "type": "object", - "properties": { - "contractName": { - "type": "string" - }, - "functionCalls": { - "type": "array", - "items": { - "type": "object" - } - } - } - }, - "amountInfo": { - "type": "object", - "description": "The details of the requested amount to transfer.", - "properties": { - "amount": { - "description": "If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount.", - "type": "string" - }, - "requestedAmount": { - "description": "The amount requested by the user.", - "type": "string" - }, - "netAmount": { - "description": "The net amount of the transaction, after fee deduction.", - "type": "string" - }, - "amountUSD": { - "description": "The USD value of the requested amount.", - "type": "string" - } - } - }, - "treatAsGrossAmount": { - "type": "boolean", - "description": "For transactions initiated via this Fireblocks workspace, when set to `true`, the fee is deducted from the requested amount.\n\n**Note**: This parameter can only be considered if a transaction's asset is a base asset, such as ETH or MATIC. If the asset can't be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account." - }, - "feeInfo": { - "type": "object", - "description": "Details of the transaction's fee.", - "properties": { - "networkFee": { - "description": "The fee paid to the network", - "type": "string" - }, - "serviceFee": { - "description": "The total fee deducted by the exchange from the actual requested amount (serviceFee = amount - netAmount)", - "type": "string" - }, - "gasPrice": { - "type": "string" - } - } - }, - "feeCurrency": { - "type": "string", - "description": "The asset which was withdrawn to pay the transaction fee, for example ETH for EVM-based blockchains, BTC for Tether Omni." - }, - "networkRecords": { - "type": "array", - "description": "In case a single transaction resulted with multiple transfers, for example a result of a contract call, then this parameter specifies each transfer that took place on the blockchain. In case of a single transfer transaction, this parameter is empty.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "destination": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "txHash": { - "type": "string" - }, - "networkFee": { - "type": "string" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset" - }, - "netAmount": { - "description": "The net amount of the transaction, after fee deduction", - "type": "string" - }, - "isDropped": { - "type": "boolean" - }, - "type": { - "type": "string" - }, - "destinationAddress": { - "type": "string" - }, - "sourceAddress": { - "type": "string" - }, - "amountUSD": { - "type": "string" - }, - "index": { - "type": "number" - }, - "rewardInfo": { - "type": "object", - "description": "This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.", - "properties": { - "srcRewards": { - "type": "string" - }, - "destRewards": { - "type": "string" - } - } - } - } - } - }, - "createdAt": { - "type": "number", - "description": "The transaction’s creation date and time, in unix timestamp." - }, - "lastUpdated": { - "type": "number", - "description": "The transaction’s last update date and time, in unix timestamp." - }, - "createdBy": { - "type": "string", - "description": "User ID of the initiator of the transaction." - }, - "signedBy": { - "type": "array", - "description": "User ID’s of the signers of the transaction.", - "items": { - "type": "string" - } - }, - "rejectedBy": { - "type": "string", - "description": "User ID of the user that rejected the transaction (in case it was rejected)." - }, - "authorizationInfo": { - "type": "object", - "description": "The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)", - "properties": { - "allowOperatorAsAuthorizer": { - "type": "boolean" - }, - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ] - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "th": { - "type": "number" - }, - "users": { - "type": "object", - "additionalProperties": { - "type": "string", - "enum": [ - "PENDING_AUTHORIZATION", - "APPROVED", - "REJECTED", - "NA" - ] - } - } - } - } - } - } - }, - "exchangeTxId": { - "type": "string", - "description": "If the transaction originated from an exchange, this is the ID of this transaction at the exchange." - }, - "customerRefId": { - "type": "string", - "description": "The ID for AML providers to associate the owner of funds with transactions." - }, - "amlScreeningResult": { - "type": "object", - "description": "The result of the AML screening.", - "properties": { - "provider": { - "type": "string" - }, - "payload": { - "type": "object" - } - } - }, - "extraParameters": { - "type": "object", - "properties": {}, - "description": "Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n" - }, - "signedMessages": { - "type": "object", - "description": "A list of signed messages returned for raw signing.", - "properties": { - "content": { - "type": "string" - }, - "algorithm": { - "type": "string", - "enum": [ - "MPC_ECDSA_SECP256K1", - "MPC_EDDSA_ED25519" - ] - }, - "derivationPath": { - "type": "array", - "items": { - "type": "number" - } - }, - "signature": { - "type": "object", - "properties": { - "fullSig": { - "type": "string" - }, - "r": { - "type": "string" - }, - "s": { - "type": "string" - }, - "v": { - "type": "number" - } - } - }, - "publicKey": { - "type": "string" - } - } - }, - "numOfConfirmations": { - "type": "number", - "description": "The number of confirmations of the transaction. The number will increase until the transaction will be considered completed according to the confirmation policy." - }, - "blockInfo": { - "type": "object", - "description": "The block hash and height of the block that this transaction was mined in.\n **Note**: If an outgoing transaction uses the destinations object with more than one value in the array, blockHash is set to null.", - "properties": { - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - } - } - }, - "index": { - "type": "number", - "description": "For UTXO based assets this is the vOut, for Ethereum based, this is the index of the event of the contract call.\n **Note:** This field is not returned if a transaction uses the `destinations` object with more than one value." - }, - "rewardInfo": { - "type": "object", - "description": "This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.", - "properties": { - "srcRewards": { - "type": "string" - }, - "destRewards": { - "type": "string" - } - } - }, - "systemMessages": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "WARN", - "BLOCK" - ] - }, - "message": { - "type": "string", - "description": "A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.", - "example": "Slow transaction processing. Outgoing transactions might be stuck." - } - } - }, - "addressType": { - "type": "string", - "enum": [ - "WHITELISTED", - "ONE_TIME" - ] - }, - "requestedAmount": { - "description": "The amount requested by the user. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "amount": { - "description": "If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "netAmount": { - "description": "The net amount of the transaction, after fee deduction. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "amountUSD": { - "description": "The USD value of the requested amount. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "nullable": true, - "deprecated": true - }, - "serviceFee": { - "description": "The total fee deducted by the exchange from the actual requested amount (`serviceFee` = `amount` - `netAmount`). Deprecated - please use the `feeInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "fee": { - "description": "Deprecated - please use the `feeInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "networkFee": { - "description": "The fee paid to the network. Deprecated - please use the `feeInfo` field for accuracy.", - "type": "number", - "deprecated": true - } - } - }, - "description": "Find a specific transaction by external transaction ID.\n\nReturns transaction by external transaction ID." - }, - { - "method": "post", - "path": "/transactions/{txId}/set_confirmation_threshold", - "name": "transactions_set_confirmation_threshold_postByTxid", - "parameters": [ - { - "type": "object", - "properties": { - "txId": { - "type": "string", - "minimum": 1, - "description": "The ID of the transaction" - }, - "body": { - "type": "object", - "properties": { - "numOfConfirmations": { - "type": "number" - } - } - } - } - } - ], - "output": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - }, - "transactions": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "description": "Set confirmation threshold by transaction ID.\n\nOverrides the required number of confirmations for transaction completion by transaction ID." - }, - { - "method": "post", - "path": "/transactions/{txId}/drop", - "name": "transactions_drop_postByTxid", - "parameters": [ - { - "type": "object", - "properties": { - "txId": { - "type": "string", - "minimum": 1, - "description": "The ID of the transaction" - }, - "body": { - "type": "object", - "properties": { - "txId": { - "type": "string" - }, - "feeLevel": { - "type": "string" - }, - "gasPrice": { - "type": "string" - } - } - } - } - } - ], - "output": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - }, - "transactions": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "description": "Drop ETH transaction by ID.\n\nDrops a stuck ETH transaction and creates a replacement transaction." - }, - { - "method": "post", - "path": "/transactions/{txId}/cancel", - "name": "transactions_cancel_postByTxid", - "parameters": [ - { - "type": "object", - "properties": { - "txId": { - "type": "string", - "minimum": 1, - "description": "The ID of the transaction to cancel" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "description": "Cancel a transaction.\n\nCancels a transaction by ID." - }, - { - "method": "post", - "path": "/transactions/{txId}/freeze", - "name": "transactions_freeze_postByTxid", - "parameters": [ - { - "type": "object", - "properties": { - "txId": { - "type": "string", - "minimum": 1, - "description": "The ID of the transaction to freeze" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "description": "Freeze a transaction.\n\nFreezes a transaction by ID." - }, - { - "method": "post", - "path": "/transactions/{txId}/unfreeze", - "name": "transactions_unfreeze_postByTxid", - "parameters": [ - { - "type": "object", - "properties": { - "txId": { - "type": "string", - "minimum": 1, - "description": "The ID of the transaction to unfreeze" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "description": "Unfreeze a transaction.\n\nUnfreezes a transaction by ID and makes the transaction available again." - }, - { - "method": "post", - "path": "/txHash/{txHash}/set_confirmation_threshold", - "name": "txHash_set_confirmation_threshold_postByTxhash", - "parameters": [ - { - "type": "object", - "properties": { - "txHash": { - "type": "string", - "minimum": 1, - "description": "The TxHash" - }, - "body": { - "type": "object", - "properties": { - "numOfConfirmations": { - "type": "number" - } - } - } - } - } - ], - "output": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - }, - "transactions": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "description": "Set confirmation threshold by transaction hash.\n\nOverrides the required number of confirmations for transaction completion by transaction hash." - }, - { - "method": "get", - "path": "/payments/xb-settlements/configs", - "name": "payments_xb_settlements_configs_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "object", - "properties": { - "configurations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "configId": { - "type": "string", - "format": "uuid", - "description": "Cross Bodrder configuraion unique id" - }, - "corridorId": { - "type": "string", - "enum": [ - "MX_US", - "CO_US", - "US_MX", - "US_EU", - "US_UK" - ], - "description": "- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n" - }, - "name": { - "type": "string", - "description": "The name for the cross-border ettlement configuration" - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "inputAssetId": {}, - "outputAssetId": {} - }, - "required": [ - "accountId" - ] - } - }, - "conversionSlippageBasisPoints": { - "type": "integer", - "minimum": 0, - "maximum": 10000, - "default": 10000, - "description": "Slippage configuarion in basis points, the default value is 10%\n" - }, - "createdAt": { - "type": "number", - "description": "The creation time in epoch format." - } - }, - "required": [ - "configId", - "name", - "corridorId", - "steps", - "conversionSlippageBasisPoints", - "createdAt" - ] - } - } - }, - "required": [ - "configurations" - ] - }, - "description": "Get all the cross-border settlement configurations.
\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "post", - "path": "/payments/xb-settlements/configs", - "name": "payments_xb_settlements_configs_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name for the cross-border settlement configuration" - }, - "corridorId": { - "type": "string", - "enum": [ - "MX_US", - "CO_US", - "US_MX", - "US_EU", - "US_UK" - ], - "description": "- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n" - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "inputAssetId": {}, - "outputAssetId": {} - }, - "required": [ - "accountId" - ] - } - }, - "conversionSlippageBasisPoints": { - "type": "integer", - "minimum": 0, - "maximum": 10000, - "default": 10000, - "description": "Slippage configuarion in basis points, the default value is 10%\n" - } - }, - "required": [ - "name", - "corridorId", - "steps" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "configId": { - "type": "string", - "format": "uuid", - "description": "Cross Bodrder configuraion unique id" - }, - "corridorId": { - "type": "string", - "enum": [ - "MX_US", - "CO_US", - "US_MX", - "US_EU", - "US_UK" - ], - "description": "- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n" - }, - "name": { - "type": "string", - "description": "The name for the cross-border ettlement configuration" - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "inputAssetId": {}, - "outputAssetId": {} - }, - "required": [ - "accountId" - ] - } - }, - "conversionSlippageBasisPoints": { - "type": "integer", - "minimum": 0, - "maximum": 10000, - "default": 10000, - "description": "Slippage configuarion in basis points, the default value is 10%\n" - }, - "createdAt": { - "type": "number", - "description": "The creation time in epoch format." - } - }, - "required": [ - "configId", - "name", - "corridorId", - "steps", - "conversionSlippageBasisPoints", - "createdAt" - ] - }, - "description": "Create a new cross-border settlement configuration.\n\nCreate a new cross-border settlement configuration.
Configurations define the default assets, on-ramps, and off-ramps to use for the cross-border settlement.
\nA configuration must contain at least two steps - `ON_RAMP` and `VAULT_ACCOUNT`.
\nAll other steps (e.g., `OFF_RAMP`, `FIAT_DESTINATION`, etc.) are optional.
\nEvery step must include the `accountId` to be used, while `inputAssetId` and `outputAssetId` are optional. \nIf those are not provided, a default value will be used from the Corridor Settings.
\nIf the inputAssetId or the outputAssetId is provided for one of the objects, all assets in the objects must be consistent. For example, if the output asset of ON_RAMP is XLM_USDC_5F3T, then the input asset of the VAULT_ACCOUNT must also be XLM_USDC_5F3T..
\nYou can set a slippage amount for your configuration. Slippage is defined by basis points (bps). This value can be overloaded on execution. If you do not configure a slippage amount, the default slippage of 10000 bps (10%) is used.
\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "get", - "path": "/payments/xb-settlements/configs/{configId}", - "name": "payments_xb_settlements_configs_getByConfigid", - "parameters": [ - { - "type": "object", - "properties": { - "configId": { - "type": "string", - "description": "The cross-border settlement configuration ID." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "configId": { - "type": "string", - "format": "uuid", - "description": "Cross Bodrder configuraion unique id" - }, - "corridorId": { - "type": "string", - "enum": [ - "MX_US", - "CO_US", - "US_MX", - "US_EU", - "US_UK" - ], - "description": "- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n" - }, - "name": { - "type": "string", - "description": "The name for the cross-border ettlement configuration" - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "inputAssetId": {}, - "outputAssetId": {} - }, - "required": [ - "accountId" - ] - } - }, - "conversionSlippageBasisPoints": { - "type": "integer", - "minimum": 0, - "maximum": 10000, - "default": 10000, - "description": "Slippage configuarion in basis points, the default value is 10%\n" - }, - "createdAt": { - "type": "number", - "description": "The creation time in epoch format." - } - }, - "required": [ - "configId", - "name", - "corridorId", - "steps", - "conversionSlippageBasisPoints", - "createdAt" - ] - }, - "description": "Get a specific cross-border settlement configuration.
\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "put", - "path": "/payments/xb-settlements/configs/{configId}", - "name": "payments_xb_settlements_configs_putByConfigid", - "parameters": [ - { - "type": "object", - "properties": { - "configId": { - "type": "string", - "description": "The cross-border settlement configuration ID." - }, - "body": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name for the cross-border settlement configuration" - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "inputAssetId": {}, - "outputAssetId": {} - }, - "required": [ - "accountId" - ] - } - }, - "conversionSlippageBasisPoints": { - "type": "integer", - "minimum": 0, - "maximum": 10000, - "default": 10000, - "description": "Slippage configuarion in basis points, the default value is 10%\n" - } - }, - "required": [ - "name", - "steps" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "configId": { - "type": "string", - "format": "uuid", - "description": "Cross Bodrder configuraion unique id" - }, - "corridorId": { - "type": "string", - "enum": [ - "MX_US", - "CO_US", - "US_MX", - "US_EU", - "US_UK" - ], - "description": "- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n" - }, - "name": { - "type": "string", - "description": "The name for the cross-border ettlement configuration" - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "inputAssetId": {}, - "outputAssetId": {} - }, - "required": [ - "accountId" - ] - } - }, - "conversionSlippageBasisPoints": { - "type": "integer", - "minimum": 0, - "maximum": 10000, - "default": 10000, - "description": "Slippage configuarion in basis points, the default value is 10%\n" - }, - "createdAt": { - "type": "number", - "description": "The creation time in epoch format." - } - }, - "required": [ - "configId", - "name", - "corridorId", - "steps", - "conversionSlippageBasisPoints", - "createdAt" - ] - }, - "description": "Edit a cross-border settlement configuration.\nEditing a configuration does not affect previously executed flows that used the configuration.\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "delete", - "path": "/payments/xb-settlements/configs/{configId}", - "name": "payments_xb_settlements_configs_eraseByConfigid", - "parameters": [ - { - "type": "object", - "properties": { - "configId": { - "type": "string", - "description": "The cross-border settlement configuration ID." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "configId": { - "type": "string", - "format": "uuid", - "description": "Cross Bodrder configuraion unique id" - }, - "corridorId": { - "type": "string", - "enum": [ - "MX_US", - "CO_US", - "US_MX", - "US_EU", - "US_UK" - ], - "description": "- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n" - }, - "name": { - "type": "string", - "description": "The name for the cross-border ettlement configuration" - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "inputAssetId": {}, - "outputAssetId": {} - }, - "required": [ - "accountId" - ] - } - }, - "conversionSlippageBasisPoints": { - "type": "integer", - "minimum": 0, - "maximum": 10000, - "default": 10000, - "description": "Slippage configuarion in basis points, the default value is 10%\n" - }, - "createdAt": { - "type": "number", - "description": "The creation time in epoch format." - } - }, - "required": [ - "configId", - "name", - "corridorId", - "steps", - "conversionSlippageBasisPoints", - "createdAt" - ] - }, - "description": "Delete a cross-border settlement configuration.\nThis does not delete or remove previously executed flows that used this configuration.\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "post", - "path": "/payments/xb-settlements/flows", - "name": "payments_xb_settlements_flows_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "configId": { - "type": "string", - "format": "uuid", - "description": "Cross Bodrder configuraion unique id" - }, - "amount": { - "type": "string", - "description": "The amount to transfer in this cross-border flow. The type of asset is defined by the cross-border settlement configuration." - } - }, - "required": [ - "configId", - "amount" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "flowId": { - "type": "string", - "description": "The unique id for the cross-border flow." - }, - "configId": { - "type": "string", - "format": "uuid", - "description": "Cross Bodrder configuraion unique id" - }, - "conversionRate": { - "type": "string", - "description": "The conversion rate received from the on-ramp or off-ramp." - }, - "inputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "estimatedOutputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "totalEstimatedFee": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "totalEstimatedTime": { - "type": "number", - "description": "The total *estimated* time for executing the cross-border flow." - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "inputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "outputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "estimatedFeeAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "estimatedTime": { - "type": "number", - "description": "The estimated time for executing the step." - }, - "isSignRequired": { - "type": "boolean", - "description": "Whether or not signing is required for executing the step." - } - }, - "required": [ - "accountId", - "inputAmount", - "outputAmount", - "estimatedFeeAmount", - "estimatedTime", - "isSignRequired" - ] - } - } - }, - "required": [ - "flowId", - "configId", - "steps", - "inputAmount", - "estimatedOutputAmount", - "totalEstimatedFee", - "totalEstimatedTime", - "conversionRate" - ] - }, - "description": "Create a new cross-border settlement flow.\n\nCreate a cross-border flow (based on a cross-border configuration) with an amount to transfer. \nThe assetId is defined by the cross-border configuration.\nCreating a flow triggers a calculation of the flow estimations, including FX rates, times, and fees based on the amount provided.\nCreating a cross-border flow will not execute the flow.\n\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "get", - "path": "/payments/xb-settlements/flows/{flowId}", - "name": "payments_xb_settlements_flows_getByFlowid", - "parameters": [ - { - "type": "object", - "properties": { - "flowId": { - "type": "string", - "description": "The cross-border settlement flow ID." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "preview": { - "type": "object", - "properties": { - "flowId": { - "type": "string", - "description": "The unique id for the cross-border flow." - }, - "configId": { - "type": "string", - "format": "uuid", - "description": "Cross Bodrder configuraion unique id" - }, - "conversionRate": { - "type": "string", - "description": "The conversion rate received from the on-ramp or off-ramp." - }, - "inputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "estimatedOutputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "totalEstimatedFee": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "totalEstimatedTime": { - "type": "number", - "description": "The total *estimated* time for executing the cross-border flow." - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "inputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "outputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "estimatedFeeAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "estimatedTime": { - "type": "number", - "description": "The estimated time for executing the step." - }, - "isSignRequired": { - "type": "boolean", - "description": "Whether or not signing is required for executing the step." - } - }, - "required": [ - "accountId", - "inputAmount", - "outputAmount", - "estimatedFeeAmount", - "estimatedTime", - "isSignRequired" - ] - } - } - }, - "required": [ - "flowId", - "configId", - "steps", - "inputAmount", - "estimatedOutputAmount", - "totalEstimatedFee", - "totalEstimatedTime", - "conversionRate" - ] - }, - "execution": { - "type": "object", - "properties": { - "flowId": { - "type": "string", - "description": "The unique id for the cross-border flow." - }, - "configId": { - "type": "string", - "format": "uuid", - "description": "Cross Bodrder configuraion unique id" - }, - "inputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "outputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "totalFee": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "initiatedAt": { - "type": "number", - "description": "The time the cross-border flow executed in epoch format." - }, - "initiatedBy": { - "description": "The id of the user which launched the flow", - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "NOT_LAUNCHED", - "PROCESSING", - "COMPLETED", - "FAILED" - ] - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "A unique id for the step execution" - }, - "accountId": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "NOT_STARTED", - "PROCESSING", - "COMPLETED", - "FAILED" - ] - }, - "inputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "outputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "fee": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "startedAt": { - "type": "number", - "description": "The step execution start time in epoch format." - }, - "completedAt": { - "type": "number", - "description": "The step execution end time in epoch format." - }, - "isSignRequired": { - "type": "boolean", - "description": "Whether or not signing is required for executing the step." - } - }, - "required": [ - "id", - "accountId", - "status", - "inputAmount", - "isSignRequired" - ] - } - }, - "selectedConversionSlippage": { - "type": "object", - "description": "Indicates the selected slippage used during the flow since override logic may have taken place.", - "properties": { - "basisPoints": { - "type": "number" - }, - "reason": { - "type": "string", - "enum": [ - "DEFAULT", - "CONFIG", - "FLOW" - ] - } - }, - "required": [ - "basisPoints", - "reason" - ] - } - }, - "required": [ - "flowId", - "configId", - "steps", - "inputAmount", - "outputAmount", - "totalFee", - "initiatedAt", - "initiatedBy", - "state", - "selectedConversionSlippage" - ] - } - } - }, - "description": "Get specific cross-border settlement flow details.\n\nGets details for a specific cross-border settlement flow\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "post", - "path": "/payments/xb-settlements/flows/{flowId}/actions/execute", - "name": "payments_xb_settlements_flows_actions_execute_postByFlowid", - "parameters": [ - { - "type": "object", - "properties": { - "flowId": { - "type": "string", - "description": "The cross-border settlement flow ID." - }, - "body": { - "type": "object", - "properties": { - "conversionSlippageBasisPoints": { - "type": "integer", - "minimum": 0, - "maximum": 10000, - "default": 10000, - "description": "Slippage configuarion in basis points, the default value is 10%\n" - } - } - } - } - } - ], - "output": { - "type": "object", - "properties": { - "flowId": { - "type": "string", - "description": "The unique id for the cross-border flow." - }, - "configId": { - "type": "string", - "format": "uuid", - "description": "Cross Bodrder configuraion unique id" - }, - "inputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "outputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "totalFee": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "initiatedAt": { - "type": "number", - "description": "The time the cross-border flow executed in epoch format." - }, - "initiatedBy": { - "description": "The id of the user which launched the flow", - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "NOT_LAUNCHED", - "PROCESSING", - "COMPLETED", - "FAILED" - ] - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "A unique id for the step execution" - }, - "accountId": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "NOT_STARTED", - "PROCESSING", - "COMPLETED", - "FAILED" - ] - }, - "inputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "outputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "fee": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "startedAt": { - "type": "number", - "description": "The step execution start time in epoch format." - }, - "completedAt": { - "type": "number", - "description": "The step execution end time in epoch format." - }, - "isSignRequired": { - "type": "boolean", - "description": "Whether or not signing is required for executing the step." - } - }, - "required": [ - "id", - "accountId", - "status", - "inputAmount", - "isSignRequired" - ] - } - }, - "selectedConversionSlippage": { - "type": "object", - "description": "Indicates the selected slippage used during the flow since override logic may have taken place.", - "properties": { - "basisPoints": { - "type": "number" - }, - "reason": { - "type": "string", - "enum": [ - "DEFAULT", - "CONFIG", - "FLOW" - ] - } - }, - "required": [ - "basisPoints", - "reason" - ] - } - }, - "required": [ - "flowId", - "configId", - "steps", - "inputAmount", - "outputAmount", - "totalFee", - "initiatedAt", - "initiatedBy", - "state", - "selectedConversionSlippage" - ] - }, - "description": "Execute cross-border settlement flow.\n\nSend a payment flow with 'flowId' for execution.\nIf a differet slippage configuraion is needed for this execution than configured in the flow configuration, the request body must define the desired slippage configuration for this execution.\n\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "post", - "path": "/payments/payout", - "name": "payments_payout_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "paymentAccount": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "VAULT_ACCOUNT", - "EXCHANGE_ACCOUNT", - "FIAT_ACCOUNT" - ] - } - }, - "required": [ - "id", - "type" - ] - }, - "instructionSet": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "payeeAccount": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "VAULT_ACCOUNT", - "EXCHANGE_ACCOUNT", - "INTERNAL_WALLET", - "EXTERNAL_WALLET", - "NETWORK_CONNECTION", - "FIAT_ACCOUNT" - ], - "description": "- VAULT_ACCOUNT \ta native Fireblocks vault account\n- EXCHANGE_ACCOUNT \ta third-party exchange account\n- INTERNAL_WALLET \ta whitelisted address marked as internal to the workspace/organization\n- EXTERNAL_WALLET\ta whitelisted address marked as external\n- NETWORK_CONNECTION\ta member of the Fireblocks network\n- FIAT_ACCOUNT\ta third-party account of a fiat bank (Signature, BCB, etc)\n" - } - }, - "required": [ - "id", - "type" - ] - }, - "amount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": { - "type": "string" - } - }, - "required": [ - "amount", - "assetId" - ] - } - }, - "required": [ - "amount", - "payeeAccount" - ] - } - } - }, - "required": [ - "paymentAccount", - "instructionSet" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "payoutId": { - "type": "string" - }, - "paymentAccount": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "VAULT_ACCOUNT", - "EXCHANGE_ACCOUNT", - "FIAT_ACCOUNT" - ] - } - } - }, - "createdAt": { - "type": "number" - }, - "state": { - "type": "string", - "enum": [ - "CREATED", - "FILE_FOUND", - "REQUESTED", - "TRANSLATED", - "PROCESSING", - "SUBMITTED", - "FINALIZED", - "INSUFFICIENT_BALANCE", - "FAILED" - ], - "description": "- CREATED - payout instruction set created with all its details\n- FILE_FOUND - new file found in the FTP\n- REQUESTED - payout requested with all its details\n- TRANSLATED - payout instruction account IDs identified and translated\n- PROCESSING - payout instruction set executed and is processing\n- SUBMITTED - transactions submitted for payout instructions\n- FINALIZED - payout finished processing, all transactions processed successfully\n- INSUFFICIENT_BALANCE - insufficient balance in the payment account (can be a temporary state)\n- FAILED - one or more of the payout instructions failed\n" - }, - "status": { - "type": "string", - "enum": [ - "REGISTERED", - "VERIFYING", - "IN_PROGRESS", - "DONE", - "INSUFFICIENT_BALANCE", - "FAILED" - ], - "description": "- REQUESTED\tpayout requested with all its details\n- VERIFIED\tpayout instruction set details were verified\n- PROCESSING\tpayout instruction set executed and is processing\n- FINALIZED\tpayout done (all payout instructions completed successfully)\n- INSUFFICIENT_BALANCE\tinsufficient balance in the payment account (can be a temporary state)\n- FAILED\tone or more of the payout instructions failed\n" - }, - "reasonOfFailure": { - "type": "string", - "description": "
    \n
  • INSUFFICIENT_BALANCE
  • \n
  • SOURCE_TRANSLATION
  • \n
  • SOURCE_NOT_UNIQUE
  • \n
  • SOURCE_NOT_FOUND
  • \n
  • SOURCE_TYPE_NOT_SUPPORTED
  • \n
  • EMPTY_SOURCE
  • \n
  • DESTINATION_TRANSLATION
  • \n
  • DESTINATION_NOT_UNIQUE
  • \n
  • DESTINATION_NOT_FOUND
  • \n
  • EMPTY_DESTINATION
  • \n
  • PARSING
  • \n
  • UNKNOWN
  • \n
  • FIREBLOCKS_CLIENT
  • \n
  • TRANSACTION_SUBMISSION
  • \n
\n" - }, - "initMethod": { - "type": "string", - "enum": [ - "FILE", - "API" - ] - }, - "instructionSet": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "payeeAccount": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "VAULT_ACCOUNT", - "EXCHANGE_ACCOUNT", - "INTERNAL_WALLET", - "EXTERNAL_WALLET", - "NETWORK_CONNECTION", - "FIAT_ACCOUNT" - ], - "description": "- VAULT_ACCOUNT \ta native Fireblocks vault account\n- EXCHANGE_ACCOUNT \ta third-party exchange account\n- INTERNAL_WALLET \ta whitelisted address marked as internal to the workspace/organization\n- EXTERNAL_WALLET\ta whitelisted address marked as external\n- NETWORK_CONNECTION\ta member of the Fireblocks network\n- FIAT_ACCOUNT\ta third-party account of a fiat bank (Signature, BCB, etc)\n" - } - } - }, - "amount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": { - "type": "string" - } - }, - "required": [ - "amount", - "assetId" - ] - }, - "state": { - "type": "string", - "enum": [ - "NOT_STARTED", - "TRANSACTION_SENT", - "COMPLETED", - "FAILED", - "TRANSLATION_ERROR", - "SKIPPED" - ], - "description": "- NOT_STARTED\t- waiting to start\n- TRANSACTION_SENT - an underlying transaction was sent\n- COMPLETED\t- completed successfully\n- FAILED - failed\n- TRANSLATION_ERROR -lookup of the destination failed (due to changes in the underlying whitelisted external wallet or similar)\n- SKIPPED- no transaction(s) created for this instruction\n" - }, - "transactions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "SUBMITTED", - "QUEUED", - "PENDING_AUTHORIZATION", - "PENDING_SIGNATURE", - "BROADCASTING", - "PENDING_3RD_PARTY_MANUAL_APPROVAL", - "PENDING_3RD_PARTY", - "PENDING", - "CONFIRMING", - "CONFIRMED", - "COMPLETED", - "PARTIALLY_COMPLETED", - "PENDING_AML_SCREENING", - "CANCELLING", - "CANCELLED", - "REJECTED", - "BLOCKED", - "FAILED", - "TIMEOUT" - ] - }, - "timestamp": { - "type": "number", - "format": "date-time" - }, - "instructionId": { - "type": "string" - } - }, - "required": [ - "id", - "state" - ] - } - } - }, - "required": [ - "amount", - "payeeAccount", - "state", - "transactions" - ] - } - }, - "reportUrl": { - "type": "string" - } - }, - "required": [ - "payoutId", - "createdAt", - "state", - "status", - "paymentAccount", - "instructionSet" - ] - }, - "description": "Create a payout instruction set.\n\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoints include APIs available only for customers with Payments Engine enabled on their accounts.
\n
These endpoints are currently in beta and might be subject to changes.
\n
If you want to learn more about Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or email CSM@fireblocks.com.
\n
Create a payout instruction set.
\nA payout instruction set is a set of instructions for distributing payments from a single payment account to a list of payee accounts.
\nThe instruction set defines:
\n
    \n
  • the payment account and its account type (vault, exchange, or fiat).
  • \n
  • the account type (vault account, exchange account, whitelisted address, network connection, fiat account, or merchant account), the amount, and the asset of payment for each payee account.
  • \n
\n" - }, - { - "method": "post", - "path": "/payments/payout/{payoutId}/actions/execute", - "name": "payments_payout_actions_execute_postByPayoutid", - "parameters": [ - { - "type": "object", - "properties": { - "payoutId": { - "type": "string", - "description": "the payout id received from the creation of the payout instruction set" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "payoutId": { - "type": "string" - } - }, - "required": [ - "payoutId" - ] - }, - "description": "Execute a payout instruction set.\n\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoints include APIs available only for customers with Payments Engine enabled on their accounts.
\n
These endpoints are currently in beta and might be subject to changes.
\n
If you want to learn more about Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or email CSM@fireblocks.com.
\n
Execute a payout instruction set.
\n
The instruction set will be verified and executed.
\nSource locking
\nIf you are executing a payout instruction set from a payment account with an already active payout the active payout will complete before the new payout instruction set can be executed.
\nYou cannot execute the same payout instruction set more than once.\n" - }, - { - "method": "get", - "path": "/payments/payout/{payoutId}", - "name": "payments_payout_getByPayoutid", - "parameters": [ - { - "type": "object", - "properties": { - "payoutId": { - "type": "string", - "description": "the payout id received from the creation of the payout instruction set" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "payoutId": { - "type": "string" - }, - "paymentAccount": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "VAULT_ACCOUNT", - "EXCHANGE_ACCOUNT", - "FIAT_ACCOUNT" - ] - } - } - }, - "createdAt": { - "type": "number" - }, - "state": { - "type": "string", - "enum": [ - "CREATED", - "FILE_FOUND", - "REQUESTED", - "TRANSLATED", - "PROCESSING", - "SUBMITTED", - "FINALIZED", - "INSUFFICIENT_BALANCE", - "FAILED" - ], - "description": "- CREATED - payout instruction set created with all its details\n- FILE_FOUND - new file found in the FTP\n- REQUESTED - payout requested with all its details\n- TRANSLATED - payout instruction account IDs identified and translated\n- PROCESSING - payout instruction set executed and is processing\n- SUBMITTED - transactions submitted for payout instructions\n- FINALIZED - payout finished processing, all transactions processed successfully\n- INSUFFICIENT_BALANCE - insufficient balance in the payment account (can be a temporary state)\n- FAILED - one or more of the payout instructions failed\n" - }, - "status": { - "type": "string", - "enum": [ - "REGISTERED", - "VERIFYING", - "IN_PROGRESS", - "DONE", - "INSUFFICIENT_BALANCE", - "FAILED" - ], - "description": "- REQUESTED\tpayout requested with all its details\n- VERIFIED\tpayout instruction set details were verified\n- PROCESSING\tpayout instruction set executed and is processing\n- FINALIZED\tpayout done (all payout instructions completed successfully)\n- INSUFFICIENT_BALANCE\tinsufficient balance in the payment account (can be a temporary state)\n- FAILED\tone or more of the payout instructions failed\n" - }, - "reasonOfFailure": { - "type": "string", - "description": "
    \n
  • INSUFFICIENT_BALANCE
  • \n
  • SOURCE_TRANSLATION
  • \n
  • SOURCE_NOT_UNIQUE
  • \n
  • SOURCE_NOT_FOUND
  • \n
  • SOURCE_TYPE_NOT_SUPPORTED
  • \n
  • EMPTY_SOURCE
  • \n
  • DESTINATION_TRANSLATION
  • \n
  • DESTINATION_NOT_UNIQUE
  • \n
  • DESTINATION_NOT_FOUND
  • \n
  • EMPTY_DESTINATION
  • \n
  • PARSING
  • \n
  • UNKNOWN
  • \n
  • FIREBLOCKS_CLIENT
  • \n
  • TRANSACTION_SUBMISSION
  • \n
\n" - }, - "initMethod": { - "type": "string", - "enum": [ - "FILE", - "API" - ] - }, - "instructionSet": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "payeeAccount": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "VAULT_ACCOUNT", - "EXCHANGE_ACCOUNT", - "INTERNAL_WALLET", - "EXTERNAL_WALLET", - "NETWORK_CONNECTION", - "FIAT_ACCOUNT" - ], - "description": "- VAULT_ACCOUNT \ta native Fireblocks vault account\n- EXCHANGE_ACCOUNT \ta third-party exchange account\n- INTERNAL_WALLET \ta whitelisted address marked as internal to the workspace/organization\n- EXTERNAL_WALLET\ta whitelisted address marked as external\n- NETWORK_CONNECTION\ta member of the Fireblocks network\n- FIAT_ACCOUNT\ta third-party account of a fiat bank (Signature, BCB, etc)\n" - } - } - }, - "amount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": { - "type": "string" - } - }, - "required": [ - "amount", - "assetId" - ] - }, - "state": { - "type": "string", - "enum": [ - "NOT_STARTED", - "TRANSACTION_SENT", - "COMPLETED", - "FAILED", - "TRANSLATION_ERROR", - "SKIPPED" - ], - "description": "- NOT_STARTED\t- waiting to start\n- TRANSACTION_SENT - an underlying transaction was sent\n- COMPLETED\t- completed successfully\n- FAILED - failed\n- TRANSLATION_ERROR -lookup of the destination failed (due to changes in the underlying whitelisted external wallet or similar)\n- SKIPPED- no transaction(s) created for this instruction\n" - }, - "transactions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "SUBMITTED", - "QUEUED", - "PENDING_AUTHORIZATION", - "PENDING_SIGNATURE", - "BROADCASTING", - "PENDING_3RD_PARTY_MANUAL_APPROVAL", - "PENDING_3RD_PARTY", - "PENDING", - "CONFIRMING", - "CONFIRMED", - "COMPLETED", - "PARTIALLY_COMPLETED", - "PENDING_AML_SCREENING", - "CANCELLING", - "CANCELLED", - "REJECTED", - "BLOCKED", - "FAILED", - "TIMEOUT" - ] - }, - "timestamp": { - "type": "number", - "format": "date-time" - }, - "instructionId": { - "type": "string" - } - }, - "required": [ - "id", - "state" - ] - } - } - }, - "required": [ - "amount", - "payeeAccount", - "state", - "transactions" - ] - } - }, - "reportUrl": { - "type": "string" - } - }, - "required": [ - "payoutId", - "createdAt", - "state", - "status", - "paymentAccount", - "instructionSet" - ] - }, - "description": "Get the status of a payout instruction set.\n\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoints include APIs available only for customers with Payments Engine enabled on their accounts.
\n
These endpoints are currently in beta and might be subject to changes.
\n
If you want to learn more about Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or email CSM@fireblocks.com.
\n" - }, - { - "method": "get", - "path": "/gas_station", - "name": "gas_station_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "object", - "properties": { - "balance": { - "type": "object" - }, - "configuration": { - "type": "object", - "properties": { - "gasThreshold": { - "type": "string" - }, - "gasCap": { - "type": "string" - }, - "maxGasPrice": { - "type": "string" - } - } - } - }, - "required": [ - "low", - "medium", - "high" - ] - }, - "description": "Get gas station settings.\n\nReturns gas station settings and ETH balance." - }, - { - "method": "get", - "path": "/gas_station/{assetId}", - "name": "gas_station_getByAssetid", - "parameters": [ - { - "type": "object", - "properties": { - "assetId": { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "balance": { - "type": "object" - }, - "configuration": { - "type": "object", - "properties": { - "gasThreshold": { - "type": "string" - }, - "gasCap": { - "type": "string" - }, - "maxGasPrice": { - "type": "string" - } - } - } - }, - "required": [ - "low", - "medium", - "high" - ] - }, - "description": "Get gas station settings by asset.\n\nReturns gas station settings and balances for a requested asset." - }, - { - "method": "put", - "path": "/gas_station/configuration", - "name": "gas_station_configuration_put", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "gasThreshold": { - "type": "string" - }, - "gasCap": { - "type": "string" - }, - "maxGasPrice": { - "type": "string" - } - } - } - } - } - ], - "description": "Edit gas station settings.\n\nConfigures gas station settings for ETH." - }, - { - "method": "put", - "path": "/gas_station/configuration/{assetId}", - "name": "gas_station_configuration_putByAssetid", - "parameters": [ - { - "type": "object", - "properties": { - "assetId": { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - }, - "body": { - "type": "object", - "properties": { - "gasThreshold": { - "type": "string" - }, - "gasCap": { - "type": "string" - }, - "maxGasPrice": { - "type": "string" - } - } - } - } - } - ], - "description": "Edit gas station settings for an asset.\n\nConfigures gas station settings for a requested asset." - }, - { - "method": "get", - "path": "/users", - "name": "users_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "object", - "properties": { - "users": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "role": { - "type": "string" - }, - "email": { - "type": "string" - }, - "enabled": { - "type": "boolean" - } - } - } - } - } - }, - "description": "List users.\n\nList all users for the workspace.\n\nPlease note that this endpoint is available only for API keys with Admin permissions.\n" - }, - { - "method": "get", - "path": "/audits", - "name": "audits_get", - "parameters": [ - { - "type": "object", - "properties": { - "query": { - "type": "object", - "properties": {}, - "required": [] - } - } - } - ], - "description": "Get audit logs" - }, - { - "method": "post", - "path": "/off_exchange/add", - "name": "off_exchange_add_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "transactionRequest": { - "type": "object", - "properties": { - "operation": { - "type": "string", - "enum": [ - "TRANSFER", - "BURN", - "CONTRACT_CALL", - "MINT", - "RAW", - "TYPED_MESSAGE" - ], - "description": "* `TRANSFER` - The default value for an operation. Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n" - }, - "note": { - "type": "string", - "description": "Custom note, not sent to the blockchain, to describe the transaction at your Fireblocks workspace.", - "example": "Ticket 123" - }, - "externalTxId": { - "type": "string", - "description": "An optional but highly recommended parameter. Fireblocks will reject future transactions with same ID. \n \nYou should set this to a unique ID representing the transaction, to avoid submitting the same transaction twice. This helps with cases where submitting the transaction responds with an error code due to Internet interruptions, but the transaction was actually sent and processed. To validate whether a transaction has been processed, [Find a specific transaction by external transaction ID](https://developers.fireblocks.com/reference/get_transactions-external-tx-id-externaltxid).\n \nThere is no specific format required for this parameter.", - "example": "00000000-0000-0000-0000-000000000000" - }, - "assetId": { - "type": "string", - "description": "The ID of the asset to transfer, for `TRANSFER`, `MINT` or `BURN` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)", - "x-fb-entity": "asset", - "example": "ETH" - }, - "source": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "VAULT_ACCOUNT", - "EXCHANGE_ACCOUNT", - "INTERNAL_WALLET", - "EXTERNAL_WALLET", - "NETWORK_CONNECTION", - "FIAT_ACCOUNT", - "COMPOUND", - "GAS_STATION", - "ONE_TIME_ADDRESS", - "UNKNOWN", - "END_USER_WALLET" - ] - }, - "subType": { - "type": "string", - "enum": [ - "BINANCE", - "BINANCEUS", - "BITFINEX", - "BITHUMB", - "BITMEX", - "BITSO", - "BITSTAMP", - "BITTREX", - "BLINC", - "BYBIT", - "CIRCLE", - "COINBASEEXCHANGE", - "COINBASEPRO", - "COINMETRO", - "COINSPRO", - "CRYPTOCOM", - "DERIBIT", - "GEMINI", - "HITBTC", - "HUOBI", - "INDEPENDENTRESERVE", - "KORBIT", - "KRAKEN", - "KRAKENINTL", - "KUCOIN", - "LIQUID", - "OKCOIN", - "OKEX", - "PAXOS", - "POLONIEX", - "External", - "Internal" - ] - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "walletId": { - "type": "string", - "format": "uuid" - } - }, - "required": [ - "type" - ] - }, - "destination": {}, - "destinations": { - "type": "array", - "description": "For UTXO based blockchains, you can send a single transaction to multiple destinations.", - "items": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "destination": {} - } - } - }, - "amount": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "0.02" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 0.02 - } - ], - "description": "For `TRANSFER` operations, the requested amount to transfer, in the asset’s unit. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "treatAsGrossAmount": { - "type": "boolean", - "description": "\"When set to `true`, the fee will be deducted from the requested amount.\"\n\n**Note**: This parameter can only be considered if a transaction’s asset is a base asset, such as ETH or MATIC. If the asset can’t be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account." - }, - "forceSweep": { - "type": "boolean", - "description": "For Polkadot, Kusama and Westend transactions only. When set to true, Fireblocks will empty the asset wallet.\n\n **Note:** If set to true when the source account is exactly 1 DOT, the transaction will fail. Any amount more or less than 1 DOT succeeds. This is a Polkadot blockchain limitation." - }, - "feeLevel": { - "type": "string", - "enum": [ - "LOW", - "MEDIUM", - "HIGH" - ], - "description": "For UTXO or EVM-based blockchains only. Defines the blockchain fee level which will be payed for the transaction. Alternatively, specific fee estimation parameters exist below." - }, - "fee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For UTXO-based blockchains, the fee per bytes in the asset’s smallest unit (Satoshi, Latoshi, etc.). For Ripple, the fee for the transaction. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "priorityFee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "2" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 2 - } - ], - "description": "For Ethereum-based blockchains only, the fee for EIP-1559 transaction pricing mechanism. Value is in Gwei. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "failOnLowFee": { - "type": "boolean", - "description": "When set to `true`, in case the current `MEDIUM` fee level is higher than the one specified in the transaction, the transaction will fail to avoid getting stuck with no confirmations." - }, - "maxFee": { - "description": "The maximum fee (gas price or fee per byte) that should be payed for the transaction. In case the current value of the requested `feeLevel` is higher than this requested maximum fee. Represented by a numeric string for accurate precision.", - "type": "string", - "example": "120" - }, - "gasLimit": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "21000" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 21000 - } - ], - "description": "For EVM-based blockchains only. Units of gas required to process the transaction. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "gasPrice": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For non-EIP-1559, EVM-based transactions. Price per gas unit (in Ethereum this is specified in Gwei). Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "networkFee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For EVM-based blockchains only. The total transaction fee in the blockchain’s largest unit. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated. - The transaction blockchain fee.\n- For Ethereum, you can't pass gasPrice, gasLimit and networkFee all together.\n- A numeric value representation is required." - }, - "replaceTxByHash": { - "type": "string", - "description": "For EVM-based blockchains only. In case a transaction is stuck, specify the hash of the stuck transaction to replace it by this transaction with a higher fee, or to replace it with this transaction with a zero fee and drop it from the blockchain.", - "example": "00000000-0000-0000-0000-000000000000" - }, - "extraParameters": { - "type": "object", - "properties": {}, - "description": "Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n" - }, - "customerRefId": { - "type": "string", - "description": "The ID for AML providers to associate the owner of funds with transactions.", - "example": "abcdef" - }, - "autoStaking": { - "type": "boolean", - "description": "This feature is no longer supported." - }, - "networkStaking": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "This feature is no longer supported." - }, - "cpuStaking": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "This feature is no longer supported." - } - } - }, - "isSrcCollateral": { - "type": "boolean", - "description": "optional" - } - } - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The ID of the transaction." - }, - "status": { - "type": "string", - "description": "The primary status of the transaction. For details, see [Primary transaction statuses.] (https://developers.fireblocks.com/reference/primary-transaction-statuses)" - }, - "systemMessages": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "WARN", - "BLOCK" - ] - }, - "message": { - "type": "string", - "description": "A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.", - "example": "Slow transaction processing. Outgoing transactions might be stuck." - } - } - } - } - }, - "description": "add collateral, create deposit request" - }, - { - "method": "post", - "path": "/off_exchange/remove", - "name": "off_exchange_remove_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "transactionRequest": { - "type": "object", - "properties": { - "operation": { - "type": "string", - "enum": [ - "TRANSFER", - "BURN", - "CONTRACT_CALL", - "MINT", - "RAW", - "TYPED_MESSAGE" - ], - "description": "* `TRANSFER` - The default value for an operation. Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n" - }, - "note": { - "type": "string", - "description": "Custom note, not sent to the blockchain, to describe the transaction at your Fireblocks workspace.", - "example": "Ticket 123" - }, - "externalTxId": { - "type": "string", - "description": "An optional but highly recommended parameter. Fireblocks will reject future transactions with same ID. \n \nYou should set this to a unique ID representing the transaction, to avoid submitting the same transaction twice. This helps with cases where submitting the transaction responds with an error code due to Internet interruptions, but the transaction was actually sent and processed. To validate whether a transaction has been processed, [Find a specific transaction by external transaction ID](https://developers.fireblocks.com/reference/get_transactions-external-tx-id-externaltxid).\n \nThere is no specific format required for this parameter.", - "example": "00000000-0000-0000-0000-000000000000" - }, - "assetId": { - "type": "string", - "description": "The ID of the asset to transfer, for `TRANSFER`, `MINT` or `BURN` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)", - "x-fb-entity": "asset", - "example": "ETH" - }, - "source": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "VAULT_ACCOUNT", - "EXCHANGE_ACCOUNT", - "INTERNAL_WALLET", - "EXTERNAL_WALLET", - "NETWORK_CONNECTION", - "FIAT_ACCOUNT", - "COMPOUND", - "GAS_STATION", - "ONE_TIME_ADDRESS", - "UNKNOWN", - "END_USER_WALLET" - ] - }, - "subType": { - "type": "string", - "enum": [ - "BINANCE", - "BINANCEUS", - "BITFINEX", - "BITHUMB", - "BITMEX", - "BITSO", - "BITSTAMP", - "BITTREX", - "BLINC", - "BYBIT", - "CIRCLE", - "COINBASEEXCHANGE", - "COINBASEPRO", - "COINMETRO", - "COINSPRO", - "CRYPTOCOM", - "DERIBIT", - "GEMINI", - "HITBTC", - "HUOBI", - "INDEPENDENTRESERVE", - "KORBIT", - "KRAKEN", - "KRAKENINTL", - "KUCOIN", - "LIQUID", - "OKCOIN", - "OKEX", - "PAXOS", - "POLONIEX", - "External", - "Internal" - ] - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "walletId": { - "type": "string", - "format": "uuid" - } - }, - "required": [ - "type" - ] - }, - "destination": {}, - "destinations": { - "type": "array", - "description": "For UTXO based blockchains, you can send a single transaction to multiple destinations.", - "items": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "destination": {} - } - } - }, - "amount": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "0.02" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 0.02 - } - ], - "description": "For `TRANSFER` operations, the requested amount to transfer, in the asset’s unit. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "treatAsGrossAmount": { - "type": "boolean", - "description": "\"When set to `true`, the fee will be deducted from the requested amount.\"\n\n**Note**: This parameter can only be considered if a transaction’s asset is a base asset, such as ETH or MATIC. If the asset can’t be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account." - }, - "forceSweep": { - "type": "boolean", - "description": "For Polkadot, Kusama and Westend transactions only. When set to true, Fireblocks will empty the asset wallet.\n\n **Note:** If set to true when the source account is exactly 1 DOT, the transaction will fail. Any amount more or less than 1 DOT succeeds. This is a Polkadot blockchain limitation." - }, - "feeLevel": { - "type": "string", - "enum": [ - "LOW", - "MEDIUM", - "HIGH" - ], - "description": "For UTXO or EVM-based blockchains only. Defines the blockchain fee level which will be payed for the transaction. Alternatively, specific fee estimation parameters exist below." - }, - "fee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For UTXO-based blockchains, the fee per bytes in the asset’s smallest unit (Satoshi, Latoshi, etc.). For Ripple, the fee for the transaction. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "priorityFee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "2" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 2 - } - ], - "description": "For Ethereum-based blockchains only, the fee for EIP-1559 transaction pricing mechanism. Value is in Gwei. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "failOnLowFee": { - "type": "boolean", - "description": "When set to `true`, in case the current `MEDIUM` fee level is higher than the one specified in the transaction, the transaction will fail to avoid getting stuck with no confirmations." - }, - "maxFee": { - "description": "The maximum fee (gas price or fee per byte) that should be payed for the transaction. In case the current value of the requested `feeLevel` is higher than this requested maximum fee. Represented by a numeric string for accurate precision.", - "type": "string", - "example": "120" - }, - "gasLimit": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "21000" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 21000 - } - ], - "description": "For EVM-based blockchains only. Units of gas required to process the transaction. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "gasPrice": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For non-EIP-1559, EVM-based transactions. Price per gas unit (in Ethereum this is specified in Gwei). Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "networkFee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For EVM-based blockchains only. The total transaction fee in the blockchain’s largest unit. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated. - The transaction blockchain fee.\n- For Ethereum, you can't pass gasPrice, gasLimit and networkFee all together.\n- A numeric value representation is required." - }, - "replaceTxByHash": { - "type": "string", - "description": "For EVM-based blockchains only. In case a transaction is stuck, specify the hash of the stuck transaction to replace it by this transaction with a higher fee, or to replace it with this transaction with a zero fee and drop it from the blockchain.", - "example": "00000000-0000-0000-0000-000000000000" - }, - "extraParameters": { - "type": "object", - "properties": {}, - "description": "Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n" - }, - "customerRefId": { - "type": "string", - "description": "The ID for AML providers to associate the owner of funds with transactions.", - "example": "abcdef" - }, - "autoStaking": { - "type": "boolean", - "description": "This feature is no longer supported." - }, - "networkStaking": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "This feature is no longer supported." - }, - "cpuStaking": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "This feature is no longer supported." - } - } - }, - "isDstCollateral": { - "type": "boolean", - "description": "optional" - } - } - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The ID of the transaction." - }, - "status": { - "type": "string", - "description": "The primary status of the transaction. For details, see [Primary transaction statuses.] (https://developers.fireblocks.com/reference/primary-transaction-statuses)" - }, - "systemMessages": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "WARN", - "BLOCK" - ] - }, - "message": { - "type": "string", - "description": "A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.", - "example": "Slow transaction processing. Outgoing transactions might be stuck." - } - } - } - } - }, - "description": "remove collateral, create withdraw request" - }, - { - "method": "get", - "path": "/off_exchange/collateral_accounts/{mainExchangeAccountId}", - "name": "off_exchange_collateral_accounts_getByMainexchangeaccountid", - "parameters": [ - { - "type": "object", - "properties": { - "mainExchangeAccountId": { - "type": "string", - "minimum": 1, - "description": "The id of the main exchange account for which the requested collateral account is associated with" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "BINANCE", - "BINANCEUS", - "BITFINEX", - "BITHUMB", - "BITMEX", - "BITSO", - "BITSTAMP", - "BITTREX", - "CIRCLE", - "COINBASEPRO", - "COINMETRO", - "COINSPRO", - "CRYPTOCOM", - "DERIBIT", - "FTX", - "FIXUS", - "GEMINI", - "HITBTC", - "HUOBI", - "KORBIT", - "KRAKEN", - "LIQUID", - "POLONIEX", - "OKCOIN", - "OKEX", - "SEEDCX" - ] - }, - "name": { - "type": "string", - "description": "Display name of the exchange account" - }, - "status": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "total": { - "type": "string" - }, - "available": { - "type": "string" - } - } - } - }, - "tradingAccounts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "name": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "total": { - "type": "string" - }, - "available": { - "type": "string" - } - } - } - } - } - } - }, - "isSubaccount": { - "type": "boolean", - "description": "True if the account is a subaccount in an exchange" - }, - "mainAccountId": { - "description": "if the account is a sub-account, the ID of the main account", - "type": "string" - } - } - }, - "description": "Find a specific collateral exchange account.\n\nReturns a collateral account by mainExchangeAccountId." - }, - { - "method": "post", - "path": "/webhooks/resend", - "name": "webhooks_resend_post", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "object", - "properties": { - "messagesCount": { - "type": "number" - } - } - }, - "description": "Resend failed webhooks.\n\nResends all failed webhook notifications." - }, - { - "method": "post", - "path": "/webhooks/resend/{txId}", - "name": "webhooks_resend_postByTxid", - "parameters": [ - { - "type": "object", - "properties": { - "txId": { - "type": "string", - "minimum": 1, - "description": "The ID of the transaction for webhooks" - }, - "body": {} - } - } - ], - "description": "Resend failed webhooks for a transaction by ID.\n\nResends failed webhook notifications for a transaction by ID." - }, - { - "method": "get", - "path": "/nfts/ownership/tokens", - "name": "nfts_ownership_tokens_get", - "parameters": [ - { - "type": "object", - "properties": { - "query": { - "type": "object", - "properties": { - "vaultAccountIds": { - "type": "string", - "description": "A comma separated list of Vault Account IDs. Up to 100 are allowed in a single request" - }, - "ids": { - "type": "string", - "description": "A comma separated list of NFT IDs. Up to 100 are allowed in a single request." - }, - "collectionIds": { - "type": "string", - "description": "A comma separated list of collection IDs. Up to 100 are allowed in a single request." - }, - "pageCursor": { - "type": "string", - "description": "Page cursor to fetch" - }, - "pageSize": { - "minimum": 1, - "maximum": 100, - "type": "number", - "description": "Items per page (max 100)" - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "ownershipLastUpdateTime", - "name", - "collection.name", - "blockchainDescriptor" - ] - }, - "description": "Sort by param, it can be one param or a list of params separated by comma" - }, - "search": { - "maximum": 100, - "type": "string", - "description": "Search owned tokens and their collections. Possible criteria for search: token name and id within the contract/collection, collection name, blockchain descriptor and name." - } - }, - "required": [] - } - } - } - ], - "output": {}, - "description": "List all owned tokens (paginated).\n\nReturns all tokens and their data in your workspace.\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n" - }, - { - "method": "put", - "path": "/nfts/ownership/tokens", - "name": "nfts_ownership_tokens_put", - "parameters": [ - { - "type": "object", - "properties": { - "query": { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "string", - "description": "Vault account filter" - } - }, - "required": [ - "vaultAccountId" - ] - } - } - } - ], - "description": "Refresh vault account tokens.\n\nUpdates all tokens and balances per blockchain and vault account.\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n" - }, - { - "method": "get", - "path": "/nfts/ownership/collections", - "name": "nfts_ownership_collections_get", - "parameters": [ - { - "type": "object", - "properties": { - "query": { - "type": "object", - "properties": { - "search": { - "maximum": 100, - "type": "string", - "description": "Search owned collections. Possible criteria for search: collection name, collection contract address." - }, - "pageCursor": { - "type": "string", - "description": "Page cursor to fetch" - }, - "pageSize": { - "minimum": 1, - "maximum": 100, - "type": "number", - "description": "Items per page (max 100)" - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "name" - ] - }, - "description": "Sort by param, it can be one param or a list of params separated by comma" - } - }, - "required": [] - } - } - } - ], - "output": {}, - "description": "List owned collections (paginated).\n\nReturns all collections in your workspace\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n" - }, - { - "method": "get", - "path": "/nfts/tokens/{id}", - "name": "nfts_tokens_getById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "NFT ID" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The Fireblocks NFT asset id" - }, - "tokenId": { - "type": "string", - "description": "Token id within the contract/collection" - }, - "standard": { - "type": "string", - "description": "ERC721 / ERC1155" - }, - "metadataURI": { - "type": "string", - "description": "URL of the original token JSON metadata" - }, - "cachedMetadataURI": { - "type": "string", - "description": "URL of the cached token JSON metadata" - }, - "media": { - "description": "Media items extracted from metadata JSON", - "type": "array", - "items": { - "type": "object", - "properties": { - "url": { - "type": "string", - "description": "Cached accessible URL" - }, - "contentType": { - "type": "string", - "enum": [ - "IMAGE", - "VIDEO", - "ANIMATION", - "THREE_D", - "TEXT", - "GIF", - "UNKNOWN_TYPE", - "SVG", - "AUDIO" - ], - "description": "Media type" - } - }, - "required": [ - "url", - "contentType" - ] - } - }, - "collection": { - "description": "Parent collection information", - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "symbol": { - "type": "string" - } - } - }, - "blockchainDescriptor": { - "type": "string", - "enum": [ - "ETH", - "ETH_TEST3", - "POLYGON", - "POLYGON_TEST_MUMBAI" - ] - }, - "description": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "id", - "tokenId", - "standard", - "media", - "blockchainDescriptor", - "description", - "name" - ] - }, - "description": "List token data by ID.\n\nReturns the requested token data.\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n" - }, - { - "method": "put", - "path": "/nfts/tokens/{id}", - "name": "nfts_tokens_putById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "NFT ID" - } - } - } - ], - "description": "Refresh token metadata.\n\nUpdates the latest token metadata.\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n" - }, - { - "method": "get", - "path": "/nfts/tokens", - "name": "nfts_tokens_get", - "parameters": [ - { - "type": "object", - "properties": { - "query": { - "type": "object", - "properties": { - "ids": { - "type": "string", - "description": "A comma separated list of NFT IDs. Up to 100 are allowed in a single request." - }, - "pageCursor": { - "type": "string", - "description": "Page cursor to fetch" - }, - "pageSize": { - "minimum": 1, - "maximum": 100, - "type": "number", - "description": "Items per page (max 100)" - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "collection.name", - "name", - "blockchainDescriptor" - ] - }, - "description": "Sort by param, it can be one param or a list of params separated by comma" - } - }, - "required": [ - "ids" - ] - } - } - } - ], - "output": {}, - "description": "List tokens by IDs.\n\nReturns the requested tokens data\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n" - }, - { - "method": "put", - "path": "/nfts/ownership/tokens/{id}/status", - "name": "nfts_ownership_tokens_status_putById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "NFT ID" - }, - "body": { - "type": "object", - "properties": { - "status": { - "type": "string", - "enum": [ - "LISTED", - "ARCHIVED" - ] - } - }, - "required": [ - "status" - ] - } - } - } - ], - "description": "Update token ownership status.\n\nUpdates token ownership status for a tenant, in all tenant vaults.\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n" - }, - { - "method": "get", - "path": "/connections", - "name": "connections_get", - "parameters": [ - { - "type": "object", - "properties": { - "query": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "userId": { - "type": "string" - }, - "vaultAccountId": { - "type": "number" - }, - "connectionMethod": { - "type": "string" - }, - "feeLevel": { - "type": "string" - }, - "appUrl": { - "type": "string" - }, - "appName": { - "type": "string" - }, - "pageSize": { - "type": "number", - "default": 10, - "maximum": 50, - "description": "Amount of results to return in the next page." - }, - "next": { - "type": "string", - "description": "Cursor to the next page" - } - }, - "required": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "data": { - "description": "Array with the requested Web3 connection's data", - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Id of the connection", - "example": "4e9e7051-f3b2-48e9-8ee6-b12492552657" - }, - "userId": { - "type": "string", - "description": "Id of the user that created the connection" - }, - "sessionMetadata": { - "description": "Metadata of the connection (provided by the dapp)", - "type": "object", - "properties": { - "appUrl": { - "type": "string" - }, - "appName": { - "type": "string" - }, - "appDescription": { - "type": "string" - }, - "appIcon": { - "type": "string" - } - } - }, - "vaultAccountId": { - "type": "number", - "description": "The vault to connect", - "example": 1 - }, - "feeLevel": { - "type": "string", - "enum": [ - "MEDIUM", - "HIGH" - ], - "description": "The default fee level" - }, - "chainIds": { - "description": "The chains approved for the connection", - "example": [ - "ETH", - "ETH_TEST", - "SOL" - ], - "type": "array", - "items": { - "type": "string" - } - }, - "connectionType": { - "type": "string", - "enum": [ - "WalletConnect" - ], - "description": "The connection's type" - }, - "connectionMethod": { - "type": "string", - "enum": [ - "DESKTOP", - "MOBILE", - "API" - ], - "description": "The method through which the connection was established" - }, - "creationDate": { - "format": "date-time", - "type": "string", - "description": "Timestamp of the session's creation" - } - }, - "required": [ - "id", - "userId", - "sessionMetadata", - "vaultAccountId", - "feeLevel", - "chainIds", - "connectionType", - "connectionMethod", - "creationDate" - ] - } - }, - "paging": { - "type": "object", - "properties": { - "next": { - "type": "string", - "description": "Cursor to the next page" - } - }, - "required": [ - "next" - ] - } - }, - "required": [ - "data" - ] - }, - "description": "List all open Web3 connections.\n\nGet open Web3 connections." - }, - { - "method": "post", - "path": "/connections/wc", - "name": "connections_wc_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "number", - "description": "The ID of the vault to connect to the Web3 connection.", - "example": 1 - }, - "feeLevel": { - "type": "string", - "enum": [ - "MEDIUM", - "HIGH" - ], - "description": "The default fee level. Valid values are `MEDIUM` and `HIGH`." - }, - "uri": { - "type": "string", - "description": "The WalletConnect uri provided by the dapp.", - "example": "wc:77752975-906f-48f5-b59f-047826ee947e@1?bridge=https%3A%2F%2F0.bridge.walletconnect.org&key=64be99adc6086b7a729b0ec8c7e1f174927ab92e84f5c6f9527050225344a637" - }, - "chainIds": { - "description": "The ID of the blockchain network used in the Web3 connection.", - "example": [ - "ETH", - "ETH_TEST" - ], - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "vaultAccountId", - "feeLevel", - "uri", - "chainIds" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The ID of the Web3 connection initiated.", - "example": "4e9e7051-f3b2-48e9-8ee6-b12492552657" - }, - "sessionMetadata": { - "description": "Metadata of the Web3 connection (provided by the DApp).", - "type": "object", - "properties": { - "appUrl": { - "type": "string" - }, - "appName": { - "type": "string" - }, - "appDescription": { - "type": "string" - }, - "appIcon": { - "type": "string" - } - } - } - }, - "required": [ - "id", - "sessionMetadata" - ] - }, - "description": "Create a new Web3 connection.\n\nInitiate a new Web3 connection.\n\n* Note: After this succeeds, make a request to `PUT /v1/connections/wc/{id}` (below) to approve or reject the new Web3 connection." - }, - { - "method": "put", - "path": "/connections/wc/{id}", - "name": "connections_wc_putById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The ID of the initiated Web3 connection to approve." - }, - "body": { - "type": "object", - "properties": { - "approve": { - "type": "boolean", - "description": "Approval of the initiated Web3 connection." - } - }, - "required": [ - "approve" - ] - } - } - } - ], - "description": "Respond to a pending Web3 connection request.\n\nSubmit a response to *approve* or *reject* an initiated Web3 connection.\n* Note: This call is used to complete your `POST /v1/connections/wc/` request.\n\nAfter this succeeds, your new Web3 connection is created and functioning." - }, - { - "method": "delete", - "path": "/connections/wc/{id}", - "name": "connections_wc_eraseById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The ID of the existing Web3 connection to remove." - } - } - } - ], - "description": "Remove an existing Web3 connection.\n\nRemove a Web3 connection" - }, - { - "method": "post", - "path": "/screening/travel_rule/transaction/validate", - "name": "screening_travel_rule_transaction_validate_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "transactionAsset": { - "type": "string", - "example": "BTC", - "description": "Transaction asset symbol BTC,ETH)" - }, - "destination": { - "type": "string", - "example": "bc1qxy2kgdygjrsqtzq2n0yrf1234p83kkfjhx0wlh", - "description": "Transaction destination address" - }, - "transactionAmount": { - "type": "string", - "example": "10", - "description": "Transaction amount in the transaction asset" - }, - "originatorVASPdid": { - "type": "string", - "example": "did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2", - "description": "This is the identifier assigned to your VASP" - }, - "originatorEqualsBeneficiary": { - "type": "boolean", - "description": "\"True\" if the originator and beneficiary is the same person and you therefore do not need to collect any information. \"False\" if it is a third-party transfer." - }, - "travelRuleBehavior": { - "type": "boolean", - "description": "This will also check if the transaction is a TRAVEL_RULE in the beneficiary VASP's jurisdiction" - }, - "beneficiaryVASPdid": { - "type": "string", - "example": "did:ethr:0x46a7ed5813ce735387df2bfb245bd7722e0de992", - "description": "This is the identifier assigned to the VASP the funds are being sent to" - }, - "beneficiaryVASPname": { - "type": "string", - "example": "HelloCrypto", - "description": "Beneficiary VASP name" - }, - "beneficiaryName": { - "type": "string", - "example": "John Doe", - "description": "Beneficiary name" - }, - "beneficiaryAccountNumber": { - "type": "string", - "example": "1234-1234-1234-12234", - "description": "Beneficiary name" - }, - "beneficiaryAddress": { - "example": "{\"addressLine: [Wayne Manor, Gotham City, New York, USA]\"}", - "description": "Beneficiary name", - "type": "object", - "properties": { - "street": { - "type": "string", - "example": "1234 Example St", - "description": "Street address" - }, - "city": { - "type": "string", - "example": "New York", - "description": "City" - }, - "state": { - "type": "string", - "example": "NY", - "description": "State or province" - }, - "postalCode": { - "type": "string", - "example": "10001", - "description": "Postal or ZIP code" - } - } - } - }, - "required": [ - "transactionAsset", - "destination", - "transactionAmount", - "originatorVASPdid", - "originatorEqualsBeneficiary", - "travelRuleBehavior", - "beneficiaryVASPdid", - "beneficiaryVASPname", - "beneficiaryName", - "beneficiaryAccountNumber", - "beneficiaryAddress" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "isValid": { - "type": "boolean", - "description": "\"isValid\" will tell you if you have collected all the information needed for the travel rule data transfer. Once this field = \"true\", you can move on to the next step which is to transfer the front-end information to your back-end and perform Travel Rule Transaction create" - }, - "type": { - "type": "string", - "description": "\"type\" will tell you if the virtual asset value converted to FIAT value of the withdrawal request is above (=TRAVELRULE) or below (=BELOW_THRESHOLD) the threshold in your jurisdiction. If it is to an unhosted wallet which does not require travel rule information to be sent and only collected, it will say NON_CUSTODIAL.", - "example": "TRAVELRULE" - }, - "beneficiaryAddressType": { - "type": "string", - "description": "\"beneficiaryAddressType\" will tell you if your blockchain analytics provider or internal address book has been able to identify the wallet address.", - "example": "UNKNOWN" - }, - "addressSource": { - "type": "string", - "description": "\"addressSource\" will tell you if the address was found in your internal address book or identified by the blockchain analytics provider.", - "example": "UNKNOWN" - }, - "beneficiaryVASPdid": { - "type": "string", - "description": "The VASP DID of the beneficiary VASP", - "example": "did:ethr:0x46a7ed5813ce735387df2bfb245bd7722e0de992" - }, - "beneficiaryVASPname": { - "type": "string", - "description": "\"beneficiaryVASPname\" will tell you the name of the VASP that has been identified as the owner of the wallet address. This name is used in a subsequent call to get its DID.", - "example": "Fireblocks" - }, - "warnings": { - "description": "\"errors/warnings\" will tell you what information about the beneficiary you need to collect from the sender.", - "example": [ - "optional-beneficiaryAccountNumber" - ], - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "isValid", - "type", - "beneficiaryAddressType", - "addressSource", - "beneficiaryVASPdid", - "beneficiaryVASPname", - "warnings" - ] - }, - "description": "Validate Travel Rule Transaction.\n\nValidate Travel Rule transactions.\n\nChecks what beneficiary VASP details are required by your jurisdiction and the beneficiary's jurisdiction.\n\n**Note:** The reference content in this section documents the Travel Rule beta endpoint. The beta endpoint includes APIs that are currently in preview and aren't yet generally available.\n\nTo enroll in the beta and enable this endpoint, contact your Fireblocks Customer Success Manager or send an email to [CSM@fireblocks.com](mailto:CSM@fireblocks.com)." - }, - { - "method": "post", - "path": "/screening/travel_rule/transaction/validate/full", - "name": "screening_travel_rule_transaction_validate_full_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "transactionAsset": { - "type": "string", - "description": "The asset involved in the transaction" - }, - "transactionAmount": { - "type": "string", - "description": "The amount of the transaction" - }, - "originatorDid": { - "type": "string", - "description": "The DID of the transaction originator" - }, - "beneficiaryDid": { - "type": "string", - "description": "The DID of the transaction beneficiary" - }, - "originatorVASPdid": { - "type": "string", - "description": "The VASP ID of the transaction originator" - }, - "beneficiaryVASPdid": { - "type": "string", - "description": "The VASP ID of the transaction beneficiary" - }, - "beneficiaryVASPname": { - "type": "string", - "description": "The name of the VASP acting as the beneficiary" - }, - "transactionBlockchainInfo": { - "description": "Information about the blockchain transaction", - "type": "object", - "properties": { - "txHash": { - "type": "string" - }, - "origin": { - "type": "string" - }, - "destination": { - "type": "string" - } - } - }, - "originator": { - "description": "Information about the originator of the transaction", - "type": "object", - "properties": { - "fullName": { - "type": "string" - }, - "dateOfBirth": { - "type": "string" - }, - "placeOfBirth": { - "type": "string" - }, - "address": { - "type": "string" - }, - "identificationNumber": { - "type": "string" - }, - "nationality": { - "type": "string" - }, - "countryOfResidence": { - "type": "string" - }, - "taxIdentificationNumber": { - "type": "string" - }, - "customerNumber": { - "type": "string" - } - } - }, - "beneficiary": { - "description": "Information about the beneficiary of the transaction", - "type": "object", - "properties": { - "fullName": { - "type": "string" - }, - "dateOfBirth": { - "type": "string" - }, - "placeOfBirth": { - "type": "string" - }, - "address": { - "type": "string" - }, - "identificationNumber": { - "type": "string" - }, - "nationality": { - "type": "string" - }, - "countryOfResidence": { - "type": "string" - }, - "taxIdentificationNumber": { - "type": "string" - }, - "customerNumber": { - "type": "string" - } - } - }, - "encrypted": { - "type": "string", - "description": "Encrypted data related to the transaction" - }, - "protocol": { - "type": "string", - "description": "The protocol used to perform the travel rule" - }, - "notificationEmail": { - "type": "string", - "description": "The email address where a notification should be sent upon completion of the travel rule" - }, - "skipBeneficiaryDataValidation": { - "type": "boolean", - "description": "Whether to skip validation of beneficiary data" - }, - "travelRuleBehavior": { - "type": "boolean", - "description": "Whether to check if the transaction is a TRAVEL_RULE in the beneficiary VASP's jurisdiction" - }, - "originatorProof": { - "description": "Ownership proof related to the originator of the transaction", - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "passport", - "description": "Type of ownership proof" - }, - "id": { - "type": "string", - "example": "123456789", - "description": "Identification number" - }, - "name": { - "type": "string", - "example": "Alice", - "description": "Name of owner" - }, - "country": { - "type": "string", - "example": "US", - "description": "Country of issuance" - }, - "issueDate": { - "type": "string", - "example": "2022-01-01", - "description": "Date of issuance" - }, - "issuer": { - "type": "string", - "example": "US Government", - "description": "Name of issuing entity" - } - } - }, - "beneficiaryProof": { - "description": "Ownership proof related to the beneficiary of the transaction", - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "passport", - "description": "Type of ownership proof" - }, - "id": { - "type": "string", - "example": "123456789", - "description": "Identification number" - }, - "name": { - "type": "string", - "example": "Alice", - "description": "Name of owner" - }, - "country": { - "type": "string", - "example": "US", - "description": "Country of issuance" - }, - "issueDate": { - "type": "string", - "example": "2022-01-01", - "description": "Date of issuance" - }, - "issuer": { - "type": "string", - "example": "US Government", - "description": "Name of issuing entity" - } - } - }, - "pii": { - "description": "Personal identifiable information related to the transaction", - "type": "object", - "properties": { - "fullName": { - "type": "string" - }, - "dateOfBirth": { - "type": "string" - }, - "placeOfBirth": { - "type": "string" - }, - "address": { - "type": "string" - }, - "identificationNumber": { - "type": "string" - }, - "nationality": { - "type": "string" - }, - "countryOfResidence": { - "type": "string" - }, - "taxIdentificationNumber": { - "type": "string" - }, - "customerNumber": { - "type": "string" - } - } - } - }, - "required": [ - "transactionAsset", - "transactionAmount", - "originatorDid", - "beneficiaryDid", - "originatorVASPdid", - "beneficiaryVASPdid", - "beneficiaryVASPname", - "transactionBlockchainInfo", - "originator", - "beneficiary", - "encrypted", - "protocol", - "notificationEmail", - "skipBeneficiaryDataValidation", - "travelRuleBehavior", - "originatorProof", - "beneficiaryProof", - "pii" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "isValid": { - "type": "boolean", - "description": "\"isValid\" will tell you if you have collected all the information needed for the travel rule data transfer. Once this field = \"true\", you can move on to the next step which is to transfer the front-end information to your back-end and perform Travel Rule Transaction create" - }, - "type": { - "type": "string", - "description": "\"type\" will tell you if the virtual asset value converted to FIAT value of the withdrawal request is above (=TRAVELRULE) or below (=BELOW_THRESHOLD) the threshold in your jurisdiction. If it is to an unhosted wallet which does not require travel rule information to be sent and only collected, it will say NON_CUSTODIAL.", - "example": "TRAVELRULE" - }, - "beneficiaryAddressType": { - "type": "string", - "description": "\"beneficiaryAddressType\" will tell you if your blockchain analytics provider or internal address book has been able to identify the wallet address.", - "example": "UNKNOWN" - }, - "addressSource": { - "type": "string", - "description": "\"addressSource\" will tell you if the address was found in your internal address book or identified by the blockchain analytics provider.", - "example": "UNKNOWN" - }, - "beneficiaryVASPdid": { - "type": "string", - "description": "The VASP DID of the beneficiary VASP", - "example": "did:ethr:0x46a7ed5813ce735387df2bfb245bd7722e0de992" - }, - "beneficiaryVASPname": { - "type": "string", - "description": "\"beneficiaryVASPname\" will tell you the name of the VASP that has been identified as the owner of the wallet address. This name is used in a subsequent call to get its DID.", - "example": "Fireblocks" - }, - "warnings": { - "description": "\"errors/warnings\" will tell you what information about the beneficiary you need to collect from the sender.", - "example": [ - "optional-beneficiaryAccountNumber" - ], - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "isValid", - "type", - "beneficiaryAddressType", - "addressSource", - "beneficiaryVASPdid", - "beneficiaryVASPname", - "warnings" - ] - }, - "description": "Validate Full Travel Rule Transaction.\n\nValidate Full Travel Rule transactions.\n\nChecks for all required information on the originator and beneficiary VASPs.\n\n**Note:** The reference content in this section documents the Travel Rule beta endpoint. The beta endpoint includes APIs that are currently in preview and aren't yet generally available.\n\nTo enroll in the beta and enable this endpoint, contact your Fireblocks Customer Success Manager or send an email to [CSM@fireblocks.com](mailto:CSM@fireblocks.com)." - }, - { - "method": "get", - "path": "/screening/travel_rule/vasp/{did}", - "name": "screening_travel_rule_vasp_getByDid", - "parameters": [ - { - "type": "object", - "properties": { - "did": { - "type": "string" - }, - "query": { - "type": "object", - "properties": { - "order": { - "type": "string", - "description": "Field to order by" - }, - "per_page": { - "type": "number", - "description": "Records per page" - }, - "page": { - "type": "number", - "description": "Page number" - }, - "fields": { - "type": "string", - "description": "CSV of fields to return (all, \"blank\" or see list of all field names below)" - } - }, - "required": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "did": { - "type": "string" - }, - "name": { - "type": "string" - }, - "verificationStatus": { - "type": "string" - }, - "addressLine1": { - "type": "string" - }, - "addressLine2": { - "type": "string" - }, - "city": { - "type": "string" - }, - "country": { - "type": "string" - }, - "emailDomains": { - "type": "string" - }, - "website": { - "type": "string" - }, - "logo": { - "type": "string" - }, - "legalStructure": { - "type": "string" - }, - "legalName": { - "type": "string" - }, - "yearFounded": { - "type": "string" - }, - "incorporationCountry": { - "type": "string" - }, - "isRegulated": { - "type": "string" - }, - "otherNames": { - "type": "string" - }, - "identificationType": { - "type": "string" - }, - "identificationCountry": { - "type": "string" - }, - "businessNumber": { - "type": "string" - }, - "regulatoryAuthorities": { - "type": "string" - }, - "jurisdictions": { - "type": "string" - }, - "street": { - "type": "string" - }, - "number": { - "type": "string" - }, - "unit": { - "type": "string" - }, - "postCode": { - "type": "string" - }, - "state": { - "type": "string" - }, - "certificates": { - "type": "string" - }, - "description": { - "type": "string" - }, - "travelRule_OPENVASP": { - "type": "string" - }, - "travelRule_SYGNA": { - "type": "string" - }, - "travelRule_TRISA": { - "type": "string" - }, - "travelRule_TRLIGHT": { - "type": "string" - }, - "travelRule_EMAIL": { - "type": "string" - }, - "travelRule_TRP": { - "type": "string" - }, - "travelRule_SHYFT": { - "type": "string" - }, - "travelRule_USTRAVELRULEWG": { - "type": "string" - }, - "createdAt": { - "type": "string" - }, - "createdBy": { - "type": "string" - }, - "updatedAt": { - "type": "string" - }, - "updatedBy": { - "type": "string" - }, - "lastSentDate": { - "type": "string" - }, - "lastReceivedDate": { - "type": "string" - }, - "documents": { - "type": "string" - }, - "hasAdmin": { - "type": "boolean" - }, - "isNotifiable": { - "type": "boolean" - }, - "issuers": { - "type": "object", - "properties": { - "yearFounded": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "isRegulated": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "regulatoryAuthorities": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "name": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "logo": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "website": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "legalName": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "legalStructure": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "incorporationCountry": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "businessNumber": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "addressLine1": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "city": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "country": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "description": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - } - }, - "required": [ - "yearFounded", - "isRegulated", - "regulatoryAuthorities", - "name", - "logo", - "website", - "legalName", - "legalStructure", - "incorporationCountry", - "businessNumber", - "addressLine1", - "city", - "country", - "description" - ] - } - }, - "required": [ - "did", - "name", - "verificationStatus", - "addressLine1", - "addressLine2", - "city", - "country", - "emailDomains", - "website", - "logo", - "legalStructure", - "legalName", - "yearFounded", - "incorporationCountry", - "isRegulated", - "otherNames", - "identificationType", - "identificationCountry", - "businessNumber", - "regulatoryAuthorities", - "jurisdictions", - "street", - "number", - "unit", - "postCode", - "state", - "certificates", - "description", - "travelRule_OPENVASP", - "travelRule_SYGNA", - "travelRule_TRISA", - "travelRule_TRLIGHT", - "travelRule_EMAIL", - "travelRule_TRP", - "travelRule_SHYFT", - "travelRule_USTRAVELRULEWG", - "createdAt", - "createdBy", - "updatedAt", - "updatedBy", - "lastSentDate", - "lastReceivedDate", - "documents", - "hasAdmin", - "isNotifiable", - "issuers" - ] - }, - "description": "Get VASP details.\n\nGet VASP Details.\n\nReturns information about a VASP that has the specified DID.\n\n**Note:** The reference content in this section documents the Travel Rule beta endpoint. The beta endpoint includes APIs that are currently in preview and aren't yet generally available.\n\nTo enroll in the beta and enable this endpoint, contact your Fireblocks Customer Success Manager or send an email to [CSM@fireblocks.com](mailto:CSM@fireblocks.com)." - }, - { - "method": "get", - "path": "/screening/travel_rule/vasp", - "name": "screening_travel_rule_vasp_get", - "parameters": [ - { - "type": "object", - "properties": { - "query": { - "type": "object", - "properties": { - "order": { - "type": "string", - "description": "Field to order by" - }, - "per_page": { - "type": "number", - "description": "Records per page" - }, - "page": { - "type": "number", - "description": "Page number" - }, - "fields": { - "type": "string", - "description": "CSV of fields to return (all, \"blank\" or see list of all field names below)" - } - }, - "required": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "vasps": { - "type": "array", - "items": { - "type": "object", - "properties": { - "did": { - "type": "string" - }, - "name": { - "type": "string" - }, - "verificationStatus": { - "type": "string" - }, - "addressLine1": { - "type": "string" - }, - "addressLine2": { - "type": "string" - }, - "city": { - "type": "string" - }, - "country": { - "type": "string" - }, - "emailDomains": { - "type": "string" - }, - "website": { - "type": "string" - }, - "logo": { - "type": "string" - }, - "legalStructure": { - "type": "string" - }, - "legalName": { - "type": "string" - }, - "yearFounded": { - "type": "string" - }, - "incorporationCountry": { - "type": "string" - }, - "isRegulated": { - "type": "string" - }, - "otherNames": { - "type": "string" - }, - "identificationType": { - "type": "string" - }, - "identificationCountry": { - "type": "string" - }, - "businessNumber": { - "type": "string" - }, - "regulatoryAuthorities": { - "type": "string" - }, - "jurisdictions": { - "type": "string" - }, - "street": { - "type": "string" - }, - "number": { - "type": "string" - }, - "unit": { - "type": "string" - }, - "postCode": { - "type": "string" - }, - "state": { - "type": "string" - }, - "certificates": { - "type": "string" - }, - "description": { - "type": "string" - }, - "travelRule_OPENVASP": { - "type": "string" - }, - "travelRule_SYGNA": { - "type": "string" - }, - "travelRule_TRISA": { - "type": "string" - }, - "travelRule_TRLIGHT": { - "type": "string" - }, - "travelRule_EMAIL": { - "type": "string" - }, - "travelRule_TRP": { - "type": "string" - }, - "travelRule_SHYFT": { - "type": "string" - }, - "travelRule_USTRAVELRULEWG": { - "type": "string" - }, - "createdAt": { - "type": "string" - }, - "createdBy": { - "type": "string" - }, - "updatedAt": { - "type": "string" - }, - "updatedBy": { - "type": "string" - }, - "lastSentDate": { - "type": "string" - }, - "lastReceivedDate": { - "type": "string" - }, - "documents": { - "type": "string" - }, - "hasAdmin": { - "type": "boolean" - }, - "isNotifiable": { - "type": "boolean" - }, - "issuers": { - "type": "object", - "properties": { - "yearFounded": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "isRegulated": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "regulatoryAuthorities": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "name": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "logo": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "website": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "legalName": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "legalStructure": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "incorporationCountry": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "businessNumber": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "addressLine1": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "city": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "country": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "description": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - } - }, - "required": [ - "yearFounded", - "isRegulated", - "regulatoryAuthorities", - "name", - "logo", - "website", - "legalName", - "legalStructure", - "incorporationCountry", - "businessNumber", - "addressLine1", - "city", - "country", - "description" - ] - } - }, - "required": [ - "did", - "name", - "verificationStatus", - "addressLine1", - "addressLine2", - "city", - "country", - "emailDomains", - "website", - "logo", - "legalStructure", - "legalName", - "yearFounded", - "incorporationCountry", - "isRegulated", - "otherNames", - "identificationType", - "identificationCountry", - "businessNumber", - "regulatoryAuthorities", - "jurisdictions", - "street", - "number", - "unit", - "postCode", - "state", - "certificates", - "description", - "travelRule_OPENVASP", - "travelRule_SYGNA", - "travelRule_TRISA", - "travelRule_TRLIGHT", - "travelRule_EMAIL", - "travelRule_TRP", - "travelRule_SHYFT", - "travelRule_USTRAVELRULEWG", - "createdAt", - "createdBy", - "updatedAt", - "updatedBy", - "lastSentDate", - "lastReceivedDate", - "documents", - "hasAdmin", - "isNotifiable", - "issuers" - ] - } - } - }, - "required": [ - "vasps" - ] - }, - "description": "Get All VASPs.\n\nReturns a list of VASPs. VASPs can be searched and sorted and results are paginated.\n\n**Note:** The reference content in this section documents the Travel Rule beta endpoint. The beta endpoint includes APIs that are currently in preview and aren't yet generally available.\n\nTo enroll in the beta and enable this endpoint, contact your Fireblocks Customer Success Manager or send an email to [CSM@fireblocks.com](mailto:CSM@fireblocks.com)." - }, - { - "method": "put", - "path": "/screeening/travel_rule/vasp/update", - "name": "screeening_travel_rule_vasp_update_put", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "did": { - "type": "string", - "example": "did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2", - "description": "The decentralized identifier of the VASP" - }, - "pii_didkey": { - "type": "string", - "example": "did:key:z6Mks5CZRaiooKYhq5TwtXQC1gWhwiZnmiKfFrMnYY62MhYf", - "description": "The PII DID key of the VASP" - } - }, - "required": [ - "did", - "pii_didkey" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "did": { - "type": "string", - "example": "did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2", - "description": "The decentralized identifier of the VASP" - }, - "pii_didkey": { - "type": "string", - "example": "did:key:z6Mks5CZRaiooKYhq5TwtXQC1gWhwiZnmiKfFrMnYY62MhYf", - "description": "The PII DID key of the VASP" - } - }, - "required": [ - "did", - "pii_didkey" - ] - }, - "description": "Add jsonDidKey to VASP details.\n\nUpdate VASP Details.\n\nUpdates a VASP with the provided parameters. Use this endpoint to add your public jsonDIDkey generated by Notabene.\n\n**Note:** The reference content in this section documents the Travel Rule beta endpoint. The beta endpoint includes APIs that are currently in preview and aren't yet generally available.\n\nTo enroll in the beta and enable this endpoint, contact your Fireblocks Customer Success Manager or send an email to [CSM@fireblocks.com](mailto:CSM@fireblocks.com)." - }, - { - "method": "get", - "path": "/tap/active_policy", - "name": "tap_active_policy_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "object", - "description": "Policy validation", - "properties": { - "policy": { - "type": "object", - "description": "Response object for policy operations", - "properties": { - "rules": { - "type": "array", - "description": "A set of policy rules", - "items": { - "type": "object", - "description": "Policy rule which is enforced on transactions", - "properties": { - "operator": { - "type": "string", - "description": "(deprecated - replaced by \"operators\") | Defines users who can initiate the type of transaction to which the rule applies. options are * \"*\" - All users are allowed * Specific User id", - "deprecated": true - }, - "operators": { - "type": "object", - "description": "Defines users/groups who can initiate the type of transaction to which the rule applies.", - "properties": { - "wildcard": { - "type": "string", - "enum": [ - "*" - ], - "description": "If used then this property should appear as the only child property\n* \"*\" - All users are allowed\n" - }, - "users": { - "type": "array", - "description": "Set of users ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Set of group ids", - "items": { - "type": "string" - } - }, - "services": { - "type": "array", - "description": "set of services to initiate transactions", - "items": { - "type": "string" - } - } - } - }, - "transactionType": { - "type": "string", - "enum": [ - "TRANSFER", - "CONTRACT_CALL", - "APPROVE", - "MINT", - "BURN", - "SUPPLY", - "REDEEM", - "STAKE", - "RAW", - "TYPED_MESSAGE" - ], - "description": "Defines the type of transaction to which the rule applies.\n * TRANSFER - Default. Transfers funds from one account to another\n * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.\n * APPROVE - Allows a smart contract to withdraw from a designated wallet.\n * MINT - Perform a mint operation (increase supply) on a supported token\n * BURN - Perform a burn operation (reduce supply) on a supported token\n * SUPPLY - Use for DeFi to lend assets\n * REDEEM - Use for DeFi to get lending back\n * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.\n * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.\n * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.\n" - }, - "designatedSigner": { - "type": "string", - "description": "(deprecated - replaced by \"designatedSigners\") Id representing the user who signs transactions that match a specific rule", - "deprecated": true - }, - "designatedSigners": { - "type": "object", - "description": "Set of ids representing the users who signs transactions that match a specific rule", - "properties": { - "users": { - "type": "array", - "description": "Set of users ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Set of group ids", - "items": { - "type": "string" - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "TRANSFER" - ], - "description": "Policy rule type" - }, - "action": { - "type": "string", - "enum": [ - "ALLOW", - "BLOCK", - "2-TIER" - ], - "description": "Defines what occurs when a transaction meets the rule's criteria\n* ALLOW - The transaction goes through and can be signed without requiring additional approvals\n* BLOCK - The transaction is automatically blocked\n* 2-TIER - Only these users or user groups can approve \n If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through\n The list of entities are set is \"authorizationGroups\" field\n" - }, - "asset": { - "type": "string", - "description": "Defines the type of asset being transacted, options are\n* \"*\" - All assets\n* Specific asset\n" - }, - "srcType": { - "description": "(deprecated - replaced by \"src\") source account type" - }, - "srcSubType": { - "description": "(deprecated - replaced by \"src\") source sub account type" - }, - "srcId": { - "description": "(deprecated - replaced by \"src\") source account id" - }, - "src": { - "type": "object", - "description": "Defines source accounts the rule allows transfers to originate from", - "properties": { - "ids": { - "type": "array", - "description": "A set of ids", - "items": { - "type": "array", - "description": "A set of ids in a tuple format", - "items": { - "type": "string" - }, - "minItems": 1, - "maxItems": 3 - } - } - } - }, - "dstType": { - "description": "(deprecated - replaced by \"dst\") destination account type" - }, - "dstSubType": { - "description": "(deprecated - replaced by \"dst\") destination sub account type" - }, - "dstId": { - "description": "(deprecated - replaced by \"dst\") destination account id" - }, - "dst": { - "type": "object", - "description": "Defines the destination accounts the rule allows transfers to", - "properties": { - "ids": { - "type": "array", - "description": "A set of ids", - "items": { - "type": "array", - "description": "A set of ids in a tuple format", - "items": { - "type": "string" - }, - "minItems": 1, - "maxItems": 3 - } - } - } - }, - "dstAddressType": { - "type": "string", - "enum": [ - "WHITELISTED", - "ONE_TIME", - "*" - ], - "description": "Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.\nBy default, you can only transfer to an external address after it’s whitelisted.\n * WHITELISTED - Can only be sent to whitelisted addresses.\n * ONE_TIME - Can only be sent to non-whitelisted external addresses.\n * \"*\" - can be sent to whitelisted addresses or non-whitelisted external\n" - }, - "amountCurrency": { - "type": "string", - "enum": [ - "USD", - "EUR", - "NATIVE" - ], - "description": "* USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.\n* EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.\n* NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.\n" - }, - "amountScope": { - "type": "string", - "enum": [ - "SINGLE_TX", - "TIMEFRAME" - ], - "description": "* SINGLE_TX - limit applies to a single transaction\n* TIMEFRAME - limit applies to all transactions within the defined time period\n" - }, - "amount": { - "type": "number", - "description": "Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)" - }, - "periodSec": { - "type": "number", - "description": "Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.\nWhen the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.\n" - }, - "authorizers": { - "type": "array", - "description": "(deprecated - replaced by \"authorizationGroups\") Allowed entities which can approves a transaction", - "deprecated": true, - "items": { - "type": "string" - } - }, - "authorizersCount": { - "type": "number", - "description": "(deprecated - replaced by \"authorizationGroups\") Min amount of entities which are needed to approve a transaction", - "deprecated": true - }, - "authorizationGroups": { - "type": "object", - "description": "Defines the transaction approval terms", - "properties": { - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ], - "description": "* AND - requires approval of all authorization groups\n* OR - requires approval of at least one of the authorization groups\n" - }, - "allowOperatorAsAuthorizer": { - "type": "boolean", - "description": "Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction" - }, - "groups": { - "type": "array", - "description": "Groups of entities which can approve the transaction", - "items": { - "type": "object", - "properties": { - "users": { - "type": "array", - "description": "User ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Group ids", - "items": { - "type": "string" - } - }, - "th": { - "type": "number", - "description": "Represents the min amount of entities which are required to approve the transaction, default is 1." - } - } - } - } - } - }, - "amountAggregation": { - "type": "object", - "description": "Defines the method by which the Policy Engine calculates accumulation.\nIt uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.\n", - "properties": { - "operators": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - }, - "srcTransferPeers": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - }, - "dstTransferPeers": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - } - } - }, - "rawMessageSigning": { - "type": "object", - "description": "Raw message signing configuration", - "properties": { - "algorithm": { - "type": "string" - }, - "derivationPath": { - "type": "object", - "properties": { - "path": { - "type": "array", - "items": { - "type": "number" - } - } - } - } - } - }, - "applyForApprove": { - "type": "boolean", - "description": "Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)" - }, - "applyForTypedMessage": { - "type": "boolean", - "description": "Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)" - }, - "externalDescriptor": { - "type": "string", - "description": "A unique id identifying the rule" - } - }, - "required": [ - "type", - "action", - "asset", - "amountCurrency", - "amountScope", - "amount", - "periodSec", - "externalDescriptor" - ] - } - }, - "metadata": { - "type": "object", - "description": "Policy related metadata", - "properties": { - "editedBy": { - "type": "string", - "description": "The user id of the user who last edited the policy" - }, - "editedAt": { - "type": "string", - "description": "The timestamp of the last edit of the policy" - }, - "publishedBy": { - "type": "string", - "description": "The user id of the user who last published the policy" - }, - "publishedAt": { - "type": "string", - "description": "The timestamp of the last publish of the policy" - } - } - } - }, - "required": [ - "rules", - "metadata" - ] - }, - "validation": { - "type": "object", - "description": "Policy validation object", - "properties": { - "status": { - "type": "string", - "description": "Validation status" - }, - "checkResult": { - "type": "object", - "description": "Policy rules validation result", - "properties": { - "errors": { - "type": "number", - "description": "Number of errors" - }, - "result": { - "type": "array", - "description": "A set of validation results", - "items": { - "type": "object", - "description": "The rule validation result", - "properties": { - "index": { - "type": "number", - "description": "Rule index number in the policy" - }, - "status": { - "type": "string", - "enum": [ - "ok", - "failure" - ], - "description": "Validation status" - }, - "errors": { - "type": "array", - "description": "A set of rule validation error objects", - "items": { - "type": "object", - "description": "Rule validation result error", - "properties": { - "errorMessage": { - "type": "string", - "description": "Error message" - }, - "errorCode": { - "type": "number", - "description": "error code" - }, - "errorCodeName": { - "type": "string", - "description": "error code name" - }, - "errorField": { - "type": "string", - "enum": [ - "operator", - "operators", - "authorizationGroups", - "designatedSigner", - "designatedSigners", - "contractMethods", - "amountAggregation", - "src", - "dst" - ], - "description": "The field which the error relates to\n* operator - transaction initiator\n* operators - transaction initiators\n* authorizationGroups - transaction authorizer groups\n* designatedSigner - transaction signer\n* designatedSigners - transaction signers\n* contractMethods - contract methods\n* amountAggregation - transaction amount aggregation configuration\n* src - transaction source asset configuration\n* dst - transaction destination asset configuration\n" - } - }, - "required": [ - "errorMessage", - "errorCode", - "errorCodeName", - "errorField" - ] - } - } - }, - "required": [ - "index", - "status", - "errors" - ] - } - } - }, - "required": [ - "errors", - "result" - ] - } - }, - "required": [ - "status", - "checkResult" - ] - } - }, - "required": [ - "policy", - "validation" - ] - }, - "description": "Get the active policy and its validation.\n\nReturns the active policy and its validation.
\n**Note:** These endpoints are currently in beta and might be subject to changes.\nIf you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "get", - "path": "/tap/draft", - "name": "tap_draft_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "object", - "description": "Draft validation", - "properties": { - "draftResponse": { - "type": "object", - "description": "Response object for draft operations", - "properties": { - "status": { - "type": "string", - "description": "Operation status" - }, - "rules": { - "type": "array", - "description": "Draft rules", - "items": { - "type": "object", - "description": "Policy rule which is enforced on transactions", - "properties": { - "operator": { - "type": "string", - "description": "(deprecated - replaced by \"operators\") | Defines users who can initiate the type of transaction to which the rule applies. options are * \"*\" - All users are allowed * Specific User id", - "deprecated": true - }, - "operators": { - "type": "object", - "description": "Defines users/groups who can initiate the type of transaction to which the rule applies.", - "properties": { - "wildcard": { - "type": "string", - "enum": [ - "*" - ], - "description": "If used then this property should appear as the only child property\n* \"*\" - All users are allowed\n" - }, - "users": { - "type": "array", - "description": "Set of users ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Set of group ids", - "items": { - "type": "string" - } - }, - "services": { - "type": "array", - "description": "set of services to initiate transactions", - "items": { - "type": "string" - } - } - } - }, - "transactionType": { - "type": "string", - "enum": [ - "TRANSFER", - "CONTRACT_CALL", - "APPROVE", - "MINT", - "BURN", - "SUPPLY", - "REDEEM", - "STAKE", - "RAW", - "TYPED_MESSAGE" - ], - "description": "Defines the type of transaction to which the rule applies.\n * TRANSFER - Default. Transfers funds from one account to another\n * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.\n * APPROVE - Allows a smart contract to withdraw from a designated wallet.\n * MINT - Perform a mint operation (increase supply) on a supported token\n * BURN - Perform a burn operation (reduce supply) on a supported token\n * SUPPLY - Use for DeFi to lend assets\n * REDEEM - Use for DeFi to get lending back\n * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.\n * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.\n * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.\n" - }, - "designatedSigner": { - "type": "string", - "description": "(deprecated - replaced by \"designatedSigners\") Id representing the user who signs transactions that match a specific rule", - "deprecated": true - }, - "designatedSigners": { - "type": "object", - "description": "Set of ids representing the users who signs transactions that match a specific rule", - "properties": { - "users": { - "type": "array", - "description": "Set of users ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Set of group ids", - "items": { - "type": "string" - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "TRANSFER" - ], - "description": "Policy rule type" - }, - "action": { - "type": "string", - "enum": [ - "ALLOW", - "BLOCK", - "2-TIER" - ], - "description": "Defines what occurs when a transaction meets the rule's criteria\n* ALLOW - The transaction goes through and can be signed without requiring additional approvals\n* BLOCK - The transaction is automatically blocked\n* 2-TIER - Only these users or user groups can approve \n If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through\n The list of entities are set is \"authorizationGroups\" field\n" - }, - "asset": { - "type": "string", - "description": "Defines the type of asset being transacted, options are\n* \"*\" - All assets\n* Specific asset\n" - }, - "srcType": { - "description": "(deprecated - replaced by \"src\") source account type" - }, - "srcSubType": { - "description": "(deprecated - replaced by \"src\") source sub account type" - }, - "srcId": { - "description": "(deprecated - replaced by \"src\") source account id" - }, - "src": { - "type": "object", - "description": "Defines source accounts the rule allows transfers to originate from", - "properties": { - "ids": { - "type": "array", - "description": "A set of ids", - "items": { - "type": "array", - "description": "A set of ids in a tuple format", - "items": { - "type": "string" - }, - "minItems": 1, - "maxItems": 3 - } - } - } - }, - "dstType": { - "description": "(deprecated - replaced by \"dst\") destination account type" - }, - "dstSubType": { - "description": "(deprecated - replaced by \"dst\") destination sub account type" - }, - "dstId": { - "description": "(deprecated - replaced by \"dst\") destination account id" - }, - "dst": { - "type": "object", - "description": "Defines the destination accounts the rule allows transfers to", - "properties": { - "ids": { - "type": "array", - "description": "A set of ids", - "items": { - "type": "array", - "description": "A set of ids in a tuple format", - "items": { - "type": "string" - }, - "minItems": 1, - "maxItems": 3 - } - } - } - }, - "dstAddressType": { - "type": "string", - "enum": [ - "WHITELISTED", - "ONE_TIME", - "*" - ], - "description": "Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.\nBy default, you can only transfer to an external address after it’s whitelisted.\n * WHITELISTED - Can only be sent to whitelisted addresses.\n * ONE_TIME - Can only be sent to non-whitelisted external addresses.\n * \"*\" - can be sent to whitelisted addresses or non-whitelisted external\n" - }, - "amountCurrency": { - "type": "string", - "enum": [ - "USD", - "EUR", - "NATIVE" - ], - "description": "* USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.\n* EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.\n* NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.\n" - }, - "amountScope": { - "type": "string", - "enum": [ - "SINGLE_TX", - "TIMEFRAME" - ], - "description": "* SINGLE_TX - limit applies to a single transaction\n* TIMEFRAME - limit applies to all transactions within the defined time period\n" - }, - "amount": { - "type": "number", - "description": "Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)" - }, - "periodSec": { - "type": "number", - "description": "Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.\nWhen the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.\n" - }, - "authorizers": { - "type": "array", - "description": "(deprecated - replaced by \"authorizationGroups\") Allowed entities which can approves a transaction", - "deprecated": true, - "items": { - "type": "string" - } - }, - "authorizersCount": { - "type": "number", - "description": "(deprecated - replaced by \"authorizationGroups\") Min amount of entities which are needed to approve a transaction", - "deprecated": true - }, - "authorizationGroups": { - "type": "object", - "description": "Defines the transaction approval terms", - "properties": { - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ], - "description": "* AND - requires approval of all authorization groups\n* OR - requires approval of at least one of the authorization groups\n" - }, - "allowOperatorAsAuthorizer": { - "type": "boolean", - "description": "Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction" - }, - "groups": { - "type": "array", - "description": "Groups of entities which can approve the transaction", - "items": { - "type": "object", - "properties": { - "users": { - "type": "array", - "description": "User ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Group ids", - "items": { - "type": "string" - } - }, - "th": { - "type": "number", - "description": "Represents the min amount of entities which are required to approve the transaction, default is 1." - } - } - } - } - } - }, - "amountAggregation": { - "type": "object", - "description": "Defines the method by which the Policy Engine calculates accumulation.\nIt uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.\n", - "properties": { - "operators": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - }, - "srcTransferPeers": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - }, - "dstTransferPeers": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - } - } - }, - "rawMessageSigning": { - "type": "object", - "description": "Raw message signing configuration", - "properties": { - "algorithm": { - "type": "string" - }, - "derivationPath": { - "type": "object", - "properties": { - "path": { - "type": "array", - "items": { - "type": "number" - } - } - } - } - } - }, - "applyForApprove": { - "type": "boolean", - "description": "Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)" - }, - "applyForTypedMessage": { - "type": "boolean", - "description": "Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)" - }, - "externalDescriptor": { - "type": "string", - "description": "A unique id identifying the rule" - } - }, - "required": [ - "type", - "action", - "asset", - "amountCurrency", - "amountScope", - "amount", - "periodSec", - "externalDescriptor" - ] - } - }, - "draftId": { - "type": "string", - "description": "Draft unique id" - }, - "metadata": { - "type": "object", - "description": "Policy related metadata", - "properties": { - "editedBy": { - "type": "string", - "description": "The user id of the user who last edited the policy" - }, - "editedAt": { - "type": "string", - "description": "The timestamp of the last edit of the policy" - }, - "publishedBy": { - "type": "string", - "description": "The user id of the user who last published the policy" - }, - "publishedAt": { - "type": "string", - "description": "The timestamp of the last publish of the policy" - } - } - } - }, - "required": [ - "draftId", - "status", - "rules", - "metadata" - ] - }, - "validation": { - "type": "object", - "description": "Policy validation object", - "properties": { - "status": { - "type": "string", - "description": "Validation status" - }, - "checkResult": { - "type": "object", - "description": "Policy rules validation result", - "properties": { - "errors": { - "type": "number", - "description": "Number of errors" - }, - "result": { - "type": "array", - "description": "A set of validation results", - "items": { - "type": "object", - "description": "The rule validation result", - "properties": { - "index": { - "type": "number", - "description": "Rule index number in the policy" - }, - "status": { - "type": "string", - "enum": [ - "ok", - "failure" - ], - "description": "Validation status" - }, - "errors": { - "type": "array", - "description": "A set of rule validation error objects", - "items": { - "type": "object", - "description": "Rule validation result error", - "properties": { - "errorMessage": { - "type": "string", - "description": "Error message" - }, - "errorCode": { - "type": "number", - "description": "error code" - }, - "errorCodeName": { - "type": "string", - "description": "error code name" - }, - "errorField": { - "type": "string", - "enum": [ - "operator", - "operators", - "authorizationGroups", - "designatedSigner", - "designatedSigners", - "contractMethods", - "amountAggregation", - "src", - "dst" - ], - "description": "The field which the error relates to\n* operator - transaction initiator\n* operators - transaction initiators\n* authorizationGroups - transaction authorizer groups\n* designatedSigner - transaction signer\n* designatedSigners - transaction signers\n* contractMethods - contract methods\n* amountAggregation - transaction amount aggregation configuration\n* src - transaction source asset configuration\n* dst - transaction destination asset configuration\n" - } - }, - "required": [ - "errorMessage", - "errorCode", - "errorCodeName", - "errorField" - ] - } - } - }, - "required": [ - "index", - "status", - "errors" - ] - } - } - }, - "required": [ - "errors", - "result" - ] - } - }, - "required": [ - "status", - "checkResult" - ] - } - }, - "required": [ - "draftResponse", - "validation" - ] - }, - "description": "Get the active draft.\n\nReturns the active draft and its validation.
\n**Note:** These endpoints are currently in beta and might be subject to changes.\nIf you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "post", - "path": "/tap/draft", - "name": "tap_draft_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": {} - } - } - ], - "output": { - "type": "object", - "description": "Response object of the publish policy operation", - "properties": { - "status": { - "type": "string", - "enum": [ - "SUCCESS", - "UNVALIDATED", - "INVALID_CONFIGURATION", - "PENDING", - "PENDING_CONSOLE_APPROVAL", - "AWAITING_QUORUM", - "UNHANDLED_ERROR" - ], - "description": "* SUCCESS - success\n* UNVALIDATED - not validated yet\n* INVALID_CONFIGURATION - at least one rule is invalid\n* PENDING - pending approval\n* PENDING_CONSOLE_APPROVAL - pending approval from the console app\n* AWAITING_QUORUM - pending quorum approval\n* UNHANDLED_ERROR - unhandled error\n" - }, - "rules": { - "type": "array", - "items": { - "type": "object", - "description": "Policy rule which is enforced on transactions", - "properties": { - "operator": { - "type": "string", - "description": "(deprecated - replaced by \"operators\") | Defines users who can initiate the type of transaction to which the rule applies. options are * \"*\" - All users are allowed * Specific User id", - "deprecated": true - }, - "operators": { - "type": "object", - "description": "Defines users/groups who can initiate the type of transaction to which the rule applies.", - "properties": { - "wildcard": { - "type": "string", - "enum": [ - "*" - ], - "description": "If used then this property should appear as the only child property\n* \"*\" - All users are allowed\n" - }, - "users": { - "type": "array", - "description": "Set of users ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Set of group ids", - "items": { - "type": "string" - } - }, - "services": { - "type": "array", - "description": "set of services to initiate transactions", - "items": { - "type": "string" - } - } - } - }, - "transactionType": { - "type": "string", - "enum": [ - "TRANSFER", - "CONTRACT_CALL", - "APPROVE", - "MINT", - "BURN", - "SUPPLY", - "REDEEM", - "STAKE", - "RAW", - "TYPED_MESSAGE" - ], - "description": "Defines the type of transaction to which the rule applies.\n * TRANSFER - Default. Transfers funds from one account to another\n * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.\n * APPROVE - Allows a smart contract to withdraw from a designated wallet.\n * MINT - Perform a mint operation (increase supply) on a supported token\n * BURN - Perform a burn operation (reduce supply) on a supported token\n * SUPPLY - Use for DeFi to lend assets\n * REDEEM - Use for DeFi to get lending back\n * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.\n * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.\n * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.\n" - }, - "designatedSigner": { - "type": "string", - "description": "(deprecated - replaced by \"designatedSigners\") Id representing the user who signs transactions that match a specific rule", - "deprecated": true - }, - "designatedSigners": { - "type": "object", - "description": "Set of ids representing the users who signs transactions that match a specific rule", - "properties": { - "users": { - "type": "array", - "description": "Set of users ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Set of group ids", - "items": { - "type": "string" - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "TRANSFER" - ], - "description": "Policy rule type" - }, - "action": { - "type": "string", - "enum": [ - "ALLOW", - "BLOCK", - "2-TIER" - ], - "description": "Defines what occurs when a transaction meets the rule's criteria\n* ALLOW - The transaction goes through and can be signed without requiring additional approvals\n* BLOCK - The transaction is automatically blocked\n* 2-TIER - Only these users or user groups can approve \n If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through\n The list of entities are set is \"authorizationGroups\" field\n" - }, - "asset": { - "type": "string", - "description": "Defines the type of asset being transacted, options are\n* \"*\" - All assets\n* Specific asset\n" - }, - "srcType": { - "description": "(deprecated - replaced by \"src\") source account type" - }, - "srcSubType": { - "description": "(deprecated - replaced by \"src\") source sub account type" - }, - "srcId": { - "description": "(deprecated - replaced by \"src\") source account id" - }, - "src": { - "type": "object", - "description": "Defines source accounts the rule allows transfers to originate from", - "properties": { - "ids": { - "type": "array", - "description": "A set of ids", - "items": { - "type": "array", - "description": "A set of ids in a tuple format", - "items": { - "type": "string" - }, - "minItems": 1, - "maxItems": 3 - } - } - } - }, - "dstType": { - "description": "(deprecated - replaced by \"dst\") destination account type" - }, - "dstSubType": { - "description": "(deprecated - replaced by \"dst\") destination sub account type" - }, - "dstId": { - "description": "(deprecated - replaced by \"dst\") destination account id" - }, - "dst": { - "type": "object", - "description": "Defines the destination accounts the rule allows transfers to", - "properties": { - "ids": { - "type": "array", - "description": "A set of ids", - "items": { - "type": "array", - "description": "A set of ids in a tuple format", - "items": { - "type": "string" - }, - "minItems": 1, - "maxItems": 3 - } - } - } - }, - "dstAddressType": { - "type": "string", - "enum": [ - "WHITELISTED", - "ONE_TIME", - "*" - ], - "description": "Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.\nBy default, you can only transfer to an external address after it’s whitelisted.\n * WHITELISTED - Can only be sent to whitelisted addresses.\n * ONE_TIME - Can only be sent to non-whitelisted external addresses.\n * \"*\" - can be sent to whitelisted addresses or non-whitelisted external\n" - }, - "amountCurrency": { - "type": "string", - "enum": [ - "USD", - "EUR", - "NATIVE" - ], - "description": "* USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.\n* EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.\n* NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.\n" - }, - "amountScope": { - "type": "string", - "enum": [ - "SINGLE_TX", - "TIMEFRAME" - ], - "description": "* SINGLE_TX - limit applies to a single transaction\n* TIMEFRAME - limit applies to all transactions within the defined time period\n" - }, - "amount": { - "type": "number", - "description": "Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)" - }, - "periodSec": { - "type": "number", - "description": "Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.\nWhen the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.\n" - }, - "authorizers": { - "type": "array", - "description": "(deprecated - replaced by \"authorizationGroups\") Allowed entities which can approves a transaction", - "deprecated": true, - "items": { - "type": "string" - } - }, - "authorizersCount": { - "type": "number", - "description": "(deprecated - replaced by \"authorizationGroups\") Min amount of entities which are needed to approve a transaction", - "deprecated": true - }, - "authorizationGroups": { - "type": "object", - "description": "Defines the transaction approval terms", - "properties": { - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ], - "description": "* AND - requires approval of all authorization groups\n* OR - requires approval of at least one of the authorization groups\n" - }, - "allowOperatorAsAuthorizer": { - "type": "boolean", - "description": "Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction" - }, - "groups": { - "type": "array", - "description": "Groups of entities which can approve the transaction", - "items": { - "type": "object", - "properties": { - "users": { - "type": "array", - "description": "User ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Group ids", - "items": { - "type": "string" - } - }, - "th": { - "type": "number", - "description": "Represents the min amount of entities which are required to approve the transaction, default is 1." - } - } - } - } - } - }, - "amountAggregation": { - "type": "object", - "description": "Defines the method by which the Policy Engine calculates accumulation.\nIt uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.\n", - "properties": { - "operators": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - }, - "srcTransferPeers": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - }, - "dstTransferPeers": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - } - } - }, - "rawMessageSigning": { - "type": "object", - "description": "Raw message signing configuration", - "properties": { - "algorithm": { - "type": "string" - }, - "derivationPath": { - "type": "object", - "properties": { - "path": { - "type": "array", - "items": { - "type": "number" - } - } - } - } - } - }, - "applyForApprove": { - "type": "boolean", - "description": "Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)" - }, - "applyForTypedMessage": { - "type": "boolean", - "description": "Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)" - }, - "externalDescriptor": { - "type": "string", - "description": "A unique id identifying the rule" - } - }, - "required": [ - "type", - "action", - "asset", - "amountCurrency", - "amountScope", - "amount", - "periodSec", - "externalDescriptor" - ] - } - }, - "checkResult": { - "type": "object", - "description": "Policy rules validation result", - "properties": { - "errors": { - "type": "number", - "description": "Number of errors" - }, - "result": { - "type": "array", - "description": "A set of validation results", - "items": { - "type": "object", - "description": "The rule validation result", - "properties": { - "index": { - "type": "number", - "description": "Rule index number in the policy" - }, - "status": { - "type": "string", - "enum": [ - "ok", - "failure" - ], - "description": "Validation status" - }, - "errors": { - "type": "array", - "description": "A set of rule validation error objects", - "items": { - "type": "object", - "description": "Rule validation result error", - "properties": { - "errorMessage": { - "type": "string", - "description": "Error message" - }, - "errorCode": { - "type": "number", - "description": "error code" - }, - "errorCodeName": { - "type": "string", - "description": "error code name" - }, - "errorField": { - "type": "string", - "enum": [ - "operator", - "operators", - "authorizationGroups", - "designatedSigner", - "designatedSigners", - "contractMethods", - "amountAggregation", - "src", - "dst" - ], - "description": "The field which the error relates to\n* operator - transaction initiator\n* operators - transaction initiators\n* authorizationGroups - transaction authorizer groups\n* designatedSigner - transaction signer\n* designatedSigners - transaction signers\n* contractMethods - contract methods\n* amountAggregation - transaction amount aggregation configuration\n* src - transaction source asset configuration\n* dst - transaction destination asset configuration\n" - } - }, - "required": [ - "errorMessage", - "errorCode", - "errorCodeName", - "errorField" - ] - } - } - }, - "required": [ - "index", - "status", - "errors" - ] - } - } - }, - "required": [ - "errors", - "result" - ] - }, - "metadata": { - "type": "object", - "description": "Policy related metadata", - "properties": { - "editedBy": { - "type": "string", - "description": "The user id of the user who last edited the policy" - }, - "editedAt": { - "type": "string", - "description": "The timestamp of the last edit of the policy" - }, - "publishedBy": { - "type": "string", - "description": "The user id of the user who last published the policy" - }, - "publishedAt": { - "type": "string", - "description": "The timestamp of the last publish of the policy" - } - } - } - }, - "required": [ - "status", - "rules", - "checkResult", - "metadata" - ] - }, - "description": "Send publish request for a certain draft id.\n\nSend publish request of certain draft id and returns the response.
\n**Note:** These endpoints are currently in beta and might be subject to changes.\nIf you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "put", - "path": "/tap/draft", - "name": "tap_draft_put", - "parameters": [ - { - "type": "object", - "properties": { - "body": {} - } - } - ], - "output": { - "type": "object", - "description": "Draft validation", - "properties": { - "draftResponse": { - "type": "object", - "description": "Response object for draft operations", - "properties": { - "status": { - "type": "string", - "description": "Operation status" - }, - "rules": { - "type": "array", - "description": "Draft rules", - "items": { - "type": "object", - "description": "Policy rule which is enforced on transactions", - "properties": { - "operator": { - "type": "string", - "description": "(deprecated - replaced by \"operators\") | Defines users who can initiate the type of transaction to which the rule applies. options are * \"*\" - All users are allowed * Specific User id", - "deprecated": true - }, - "operators": { - "type": "object", - "description": "Defines users/groups who can initiate the type of transaction to which the rule applies.", - "properties": { - "wildcard": { - "type": "string", - "enum": [ - "*" - ], - "description": "If used then this property should appear as the only child property\n* \"*\" - All users are allowed\n" - }, - "users": { - "type": "array", - "description": "Set of users ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Set of group ids", - "items": { - "type": "string" - } - }, - "services": { - "type": "array", - "description": "set of services to initiate transactions", - "items": { - "type": "string" - } - } - } - }, - "transactionType": { - "type": "string", - "enum": [ - "TRANSFER", - "CONTRACT_CALL", - "APPROVE", - "MINT", - "BURN", - "SUPPLY", - "REDEEM", - "STAKE", - "RAW", - "TYPED_MESSAGE" - ], - "description": "Defines the type of transaction to which the rule applies.\n * TRANSFER - Default. Transfers funds from one account to another\n * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.\n * APPROVE - Allows a smart contract to withdraw from a designated wallet.\n * MINT - Perform a mint operation (increase supply) on a supported token\n * BURN - Perform a burn operation (reduce supply) on a supported token\n * SUPPLY - Use for DeFi to lend assets\n * REDEEM - Use for DeFi to get lending back\n * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.\n * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.\n * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.\n" - }, - "designatedSigner": { - "type": "string", - "description": "(deprecated - replaced by \"designatedSigners\") Id representing the user who signs transactions that match a specific rule", - "deprecated": true - }, - "designatedSigners": { - "type": "object", - "description": "Set of ids representing the users who signs transactions that match a specific rule", - "properties": { - "users": { - "type": "array", - "description": "Set of users ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Set of group ids", - "items": { - "type": "string" - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "TRANSFER" - ], - "description": "Policy rule type" - }, - "action": { - "type": "string", - "enum": [ - "ALLOW", - "BLOCK", - "2-TIER" - ], - "description": "Defines what occurs when a transaction meets the rule's criteria\n* ALLOW - The transaction goes through and can be signed without requiring additional approvals\n* BLOCK - The transaction is automatically blocked\n* 2-TIER - Only these users or user groups can approve \n If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through\n The list of entities are set is \"authorizationGroups\" field\n" - }, - "asset": { - "type": "string", - "description": "Defines the type of asset being transacted, options are\n* \"*\" - All assets\n* Specific asset\n" - }, - "srcType": { - "description": "(deprecated - replaced by \"src\") source account type" - }, - "srcSubType": { - "description": "(deprecated - replaced by \"src\") source sub account type" - }, - "srcId": { - "description": "(deprecated - replaced by \"src\") source account id" - }, - "src": { - "type": "object", - "description": "Defines source accounts the rule allows transfers to originate from", - "properties": { - "ids": { - "type": "array", - "description": "A set of ids", - "items": { - "type": "array", - "description": "A set of ids in a tuple format", - "items": { - "type": "string" - }, - "minItems": 1, - "maxItems": 3 - } - } - } - }, - "dstType": { - "description": "(deprecated - replaced by \"dst\") destination account type" - }, - "dstSubType": { - "description": "(deprecated - replaced by \"dst\") destination sub account type" - }, - "dstId": { - "description": "(deprecated - replaced by \"dst\") destination account id" - }, - "dst": { - "type": "object", - "description": "Defines the destination accounts the rule allows transfers to", - "properties": { - "ids": { - "type": "array", - "description": "A set of ids", - "items": { - "type": "array", - "description": "A set of ids in a tuple format", - "items": { - "type": "string" - }, - "minItems": 1, - "maxItems": 3 - } - } - } - }, - "dstAddressType": { - "type": "string", - "enum": [ - "WHITELISTED", - "ONE_TIME", - "*" - ], - "description": "Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.\nBy default, you can only transfer to an external address after it’s whitelisted.\n * WHITELISTED - Can only be sent to whitelisted addresses.\n * ONE_TIME - Can only be sent to non-whitelisted external addresses.\n * \"*\" - can be sent to whitelisted addresses or non-whitelisted external\n" - }, - "amountCurrency": { - "type": "string", - "enum": [ - "USD", - "EUR", - "NATIVE" - ], - "description": "* USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.\n* EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.\n* NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.\n" - }, - "amountScope": { - "type": "string", - "enum": [ - "SINGLE_TX", - "TIMEFRAME" - ], - "description": "* SINGLE_TX - limit applies to a single transaction\n* TIMEFRAME - limit applies to all transactions within the defined time period\n" - }, - "amount": { - "type": "number", - "description": "Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)" - }, - "periodSec": { - "type": "number", - "description": "Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.\nWhen the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.\n" - }, - "authorizers": { - "type": "array", - "description": "(deprecated - replaced by \"authorizationGroups\") Allowed entities which can approves a transaction", - "deprecated": true, - "items": { - "type": "string" - } - }, - "authorizersCount": { - "type": "number", - "description": "(deprecated - replaced by \"authorizationGroups\") Min amount of entities which are needed to approve a transaction", - "deprecated": true - }, - "authorizationGroups": { - "type": "object", - "description": "Defines the transaction approval terms", - "properties": { - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ], - "description": "* AND - requires approval of all authorization groups\n* OR - requires approval of at least one of the authorization groups\n" - }, - "allowOperatorAsAuthorizer": { - "type": "boolean", - "description": "Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction" - }, - "groups": { - "type": "array", - "description": "Groups of entities which can approve the transaction", - "items": { - "type": "object", - "properties": { - "users": { - "type": "array", - "description": "User ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Group ids", - "items": { - "type": "string" - } - }, - "th": { - "type": "number", - "description": "Represents the min amount of entities which are required to approve the transaction, default is 1." - } - } - } - } - } - }, - "amountAggregation": { - "type": "object", - "description": "Defines the method by which the Policy Engine calculates accumulation.\nIt uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.\n", - "properties": { - "operators": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - }, - "srcTransferPeers": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - }, - "dstTransferPeers": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - } - } - }, - "rawMessageSigning": { - "type": "object", - "description": "Raw message signing configuration", - "properties": { - "algorithm": { - "type": "string" - }, - "derivationPath": { - "type": "object", - "properties": { - "path": { - "type": "array", - "items": { - "type": "number" - } - } - } - } - } - }, - "applyForApprove": { - "type": "boolean", - "description": "Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)" - }, - "applyForTypedMessage": { - "type": "boolean", - "description": "Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)" - }, - "externalDescriptor": { - "type": "string", - "description": "A unique id identifying the rule" - } - }, - "required": [ - "type", - "action", - "asset", - "amountCurrency", - "amountScope", - "amount", - "periodSec", - "externalDescriptor" - ] - } - }, - "draftId": { - "type": "string", - "description": "Draft unique id" - }, - "metadata": { - "type": "object", - "description": "Policy related metadata", - "properties": { - "editedBy": { - "type": "string", - "description": "The user id of the user who last edited the policy" - }, - "editedAt": { - "type": "string", - "description": "The timestamp of the last edit of the policy" - }, - "publishedBy": { - "type": "string", - "description": "The user id of the user who last published the policy" - }, - "publishedAt": { - "type": "string", - "description": "The timestamp of the last publish of the policy" - } - } - } - }, - "required": [ - "draftId", - "status", - "rules", - "metadata" - ] - }, - "validation": { - "type": "object", - "description": "Policy validation object", - "properties": { - "status": { - "type": "string", - "description": "Validation status" - }, - "checkResult": { - "type": "object", - "description": "Policy rules validation result", - "properties": { - "errors": { - "type": "number", - "description": "Number of errors" - }, - "result": { - "type": "array", - "description": "A set of validation results", - "items": { - "type": "object", - "description": "The rule validation result", - "properties": { - "index": { - "type": "number", - "description": "Rule index number in the policy" - }, - "status": { - "type": "string", - "enum": [ - "ok", - "failure" - ], - "description": "Validation status" - }, - "errors": { - "type": "array", - "description": "A set of rule validation error objects", - "items": { - "type": "object", - "description": "Rule validation result error", - "properties": { - "errorMessage": { - "type": "string", - "description": "Error message" - }, - "errorCode": { - "type": "number", - "description": "error code" - }, - "errorCodeName": { - "type": "string", - "description": "error code name" - }, - "errorField": { - "type": "string", - "enum": [ - "operator", - "operators", - "authorizationGroups", - "designatedSigner", - "designatedSigners", - "contractMethods", - "amountAggregation", - "src", - "dst" - ], - "description": "The field which the error relates to\n* operator - transaction initiator\n* operators - transaction initiators\n* authorizationGroups - transaction authorizer groups\n* designatedSigner - transaction signer\n* designatedSigners - transaction signers\n* contractMethods - contract methods\n* amountAggregation - transaction amount aggregation configuration\n* src - transaction source asset configuration\n* dst - transaction destination asset configuration\n" - } - }, - "required": [ - "errorMessage", - "errorCode", - "errorCodeName", - "errorField" - ] - } - } - }, - "required": [ - "index", - "status", - "errors" - ] - } - } - }, - "required": [ - "errors", - "result" - ] - } - }, - "required": [ - "status", - "checkResult" - ] - } - }, - "required": [ - "draftResponse", - "validation" - ] - }, - "description": "Update the draft with a new set of rules.\n\nUpdate the draft and return its validation.
\n**Note:** These endpoints are currently in beta and might be subject to changes.\nIf you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "post", - "path": "/tap/publish", - "name": "tap_publish_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": {} - } - } - ], - "output": { - "type": "object", - "description": "Response object of the publish policy operation", - "properties": { - "status": { - "type": "string", - "enum": [ - "SUCCESS", - "UNVALIDATED", - "INVALID_CONFIGURATION", - "PENDING", - "PENDING_CONSOLE_APPROVAL", - "AWAITING_QUORUM", - "UNHANDLED_ERROR" - ], - "description": "* SUCCESS - success\n* UNVALIDATED - not validated yet\n* INVALID_CONFIGURATION - at least one rule is invalid\n* PENDING - pending approval\n* PENDING_CONSOLE_APPROVAL - pending approval from the console app\n* AWAITING_QUORUM - pending quorum approval\n* UNHANDLED_ERROR - unhandled error\n" - }, - "rules": { - "type": "array", - "items": { - "type": "object", - "description": "Policy rule which is enforced on transactions", - "properties": { - "operator": { - "type": "string", - "description": "(deprecated - replaced by \"operators\") | Defines users who can initiate the type of transaction to which the rule applies. options are * \"*\" - All users are allowed * Specific User id", - "deprecated": true - }, - "operators": { - "type": "object", - "description": "Defines users/groups who can initiate the type of transaction to which the rule applies.", - "properties": { - "wildcard": { - "type": "string", - "enum": [ - "*" - ], - "description": "If used then this property should appear as the only child property\n* \"*\" - All users are allowed\n" - }, - "users": { - "type": "array", - "description": "Set of users ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Set of group ids", - "items": { - "type": "string" - } - }, - "services": { - "type": "array", - "description": "set of services to initiate transactions", - "items": { - "type": "string" - } - } - } - }, - "transactionType": { - "type": "string", - "enum": [ - "TRANSFER", - "CONTRACT_CALL", - "APPROVE", - "MINT", - "BURN", - "SUPPLY", - "REDEEM", - "STAKE", - "RAW", - "TYPED_MESSAGE" - ], - "description": "Defines the type of transaction to which the rule applies.\n * TRANSFER - Default. Transfers funds from one account to another\n * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.\n * APPROVE - Allows a smart contract to withdraw from a designated wallet.\n * MINT - Perform a mint operation (increase supply) on a supported token\n * BURN - Perform a burn operation (reduce supply) on a supported token\n * SUPPLY - Use for DeFi to lend assets\n * REDEEM - Use for DeFi to get lending back\n * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.\n * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.\n * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.\n" - }, - "designatedSigner": { - "type": "string", - "description": "(deprecated - replaced by \"designatedSigners\") Id representing the user who signs transactions that match a specific rule", - "deprecated": true - }, - "designatedSigners": { - "type": "object", - "description": "Set of ids representing the users who signs transactions that match a specific rule", - "properties": { - "users": { - "type": "array", - "description": "Set of users ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Set of group ids", - "items": { - "type": "string" - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "TRANSFER" - ], - "description": "Policy rule type" - }, - "action": { - "type": "string", - "enum": [ - "ALLOW", - "BLOCK", - "2-TIER" - ], - "description": "Defines what occurs when a transaction meets the rule's criteria\n* ALLOW - The transaction goes through and can be signed without requiring additional approvals\n* BLOCK - The transaction is automatically blocked\n* 2-TIER - Only these users or user groups can approve \n If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through\n The list of entities are set is \"authorizationGroups\" field\n" - }, - "asset": { - "type": "string", - "description": "Defines the type of asset being transacted, options are\n* \"*\" - All assets\n* Specific asset\n" - }, - "srcType": { - "description": "(deprecated - replaced by \"src\") source account type" - }, - "srcSubType": { - "description": "(deprecated - replaced by \"src\") source sub account type" - }, - "srcId": { - "description": "(deprecated - replaced by \"src\") source account id" - }, - "src": { - "type": "object", - "description": "Defines source accounts the rule allows transfers to originate from", - "properties": { - "ids": { - "type": "array", - "description": "A set of ids", - "items": { - "type": "array", - "description": "A set of ids in a tuple format", - "items": { - "type": "string" - }, - "minItems": 1, - "maxItems": 3 - } - } - } - }, - "dstType": { - "description": "(deprecated - replaced by \"dst\") destination account type" - }, - "dstSubType": { - "description": "(deprecated - replaced by \"dst\") destination sub account type" - }, - "dstId": { - "description": "(deprecated - replaced by \"dst\") destination account id" - }, - "dst": { - "type": "object", - "description": "Defines the destination accounts the rule allows transfers to", - "properties": { - "ids": { - "type": "array", - "description": "A set of ids", - "items": { - "type": "array", - "description": "A set of ids in a tuple format", - "items": { - "type": "string" - }, - "minItems": 1, - "maxItems": 3 - } - } - } - }, - "dstAddressType": { - "type": "string", - "enum": [ - "WHITELISTED", - "ONE_TIME", - "*" - ], - "description": "Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.\nBy default, you can only transfer to an external address after it’s whitelisted.\n * WHITELISTED - Can only be sent to whitelisted addresses.\n * ONE_TIME - Can only be sent to non-whitelisted external addresses.\n * \"*\" - can be sent to whitelisted addresses or non-whitelisted external\n" - }, - "amountCurrency": { - "type": "string", - "enum": [ - "USD", - "EUR", - "NATIVE" - ], - "description": "* USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.\n* EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.\n* NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.\n" - }, - "amountScope": { - "type": "string", - "enum": [ - "SINGLE_TX", - "TIMEFRAME" - ], - "description": "* SINGLE_TX - limit applies to a single transaction\n* TIMEFRAME - limit applies to all transactions within the defined time period\n" - }, - "amount": { - "type": "number", - "description": "Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)" - }, - "periodSec": { - "type": "number", - "description": "Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.\nWhen the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.\n" - }, - "authorizers": { - "type": "array", - "description": "(deprecated - replaced by \"authorizationGroups\") Allowed entities which can approves a transaction", - "deprecated": true, - "items": { - "type": "string" - } - }, - "authorizersCount": { - "type": "number", - "description": "(deprecated - replaced by \"authorizationGroups\") Min amount of entities which are needed to approve a transaction", - "deprecated": true - }, - "authorizationGroups": { - "type": "object", - "description": "Defines the transaction approval terms", - "properties": { - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ], - "description": "* AND - requires approval of all authorization groups\n* OR - requires approval of at least one of the authorization groups\n" - }, - "allowOperatorAsAuthorizer": { - "type": "boolean", - "description": "Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction" - }, - "groups": { - "type": "array", - "description": "Groups of entities which can approve the transaction", - "items": { - "type": "object", - "properties": { - "users": { - "type": "array", - "description": "User ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Group ids", - "items": { - "type": "string" - } - }, - "th": { - "type": "number", - "description": "Represents the min amount of entities which are required to approve the transaction, default is 1." - } - } - } - } - } - }, - "amountAggregation": { - "type": "object", - "description": "Defines the method by which the Policy Engine calculates accumulation.\nIt uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.\n", - "properties": { - "operators": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - }, - "srcTransferPeers": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - }, - "dstTransferPeers": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - } - } - }, - "rawMessageSigning": { - "type": "object", - "description": "Raw message signing configuration", - "properties": { - "algorithm": { - "type": "string" - }, - "derivationPath": { - "type": "object", - "properties": { - "path": { - "type": "array", - "items": { - "type": "number" - } - } - } - } - } - }, - "applyForApprove": { - "type": "boolean", - "description": "Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)" - }, - "applyForTypedMessage": { - "type": "boolean", - "description": "Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)" - }, - "externalDescriptor": { - "type": "string", - "description": "A unique id identifying the rule" - } - }, - "required": [ - "type", - "action", - "asset", - "amountCurrency", - "amountScope", - "amount", - "periodSec", - "externalDescriptor" - ] - } - }, - "checkResult": { - "type": "object", - "description": "Policy rules validation result", - "properties": { - "errors": { - "type": "number", - "description": "Number of errors" - }, - "result": { - "type": "array", - "description": "A set of validation results", - "items": { - "type": "object", - "description": "The rule validation result", - "properties": { - "index": { - "type": "number", - "description": "Rule index number in the policy" - }, - "status": { - "type": "string", - "enum": [ - "ok", - "failure" - ], - "description": "Validation status" - }, - "errors": { - "type": "array", - "description": "A set of rule validation error objects", - "items": { - "type": "object", - "description": "Rule validation result error", - "properties": { - "errorMessage": { - "type": "string", - "description": "Error message" - }, - "errorCode": { - "type": "number", - "description": "error code" - }, - "errorCodeName": { - "type": "string", - "description": "error code name" - }, - "errorField": { - "type": "string", - "enum": [ - "operator", - "operators", - "authorizationGroups", - "designatedSigner", - "designatedSigners", - "contractMethods", - "amountAggregation", - "src", - "dst" - ], - "description": "The field which the error relates to\n* operator - transaction initiator\n* operators - transaction initiators\n* authorizationGroups - transaction authorizer groups\n* designatedSigner - transaction signer\n* designatedSigners - transaction signers\n* contractMethods - contract methods\n* amountAggregation - transaction amount aggregation configuration\n* src - transaction source asset configuration\n* dst - transaction destination asset configuration\n" - } - }, - "required": [ - "errorMessage", - "errorCode", - "errorCodeName", - "errorField" - ] - } - } - }, - "required": [ - "index", - "status", - "errors" - ] - } - } - }, - "required": [ - "errors", - "result" - ] - }, - "metadata": { - "type": "object", - "description": "Policy related metadata", - "properties": { - "editedBy": { - "type": "string", - "description": "The user id of the user who last edited the policy" - }, - "editedAt": { - "type": "string", - "description": "The timestamp of the last edit of the policy" - }, - "publishedBy": { - "type": "string", - "description": "The user id of the user who last published the policy" - }, - "publishedAt": { - "type": "string", - "description": "The timestamp of the last publish of the policy" - } - } - } - }, - "required": [ - "status", - "rules", - "checkResult", - "metadata" - ] - }, - "description": "Send publish request for a set of policy rules.\n\nSend publish request of set of policy rules and returns the response.
\n**Note:** These endpoints are currently in beta and might be subject to changes.\nIf you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - } - ], - "errors": [ - { - "method": "post", - "path": "/off_exchange/settlements/trader", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/off_exchange/settlements/transactions", - "messages": [ - "Failed to escape $ref" - ] - } - ], - "options": { - "keyword": true, - "separate": null - } -} \ No newline at end of file +{"openapi":"3.0.3","functions":[{"method":"get","path":"/vault/accounts","name":"vault_accounts_get","parameters":[{"type":"object","properties":{"query":{"type":"object","properties":{"namePrefix":{"type":"string"},"nameSuffix":{"type":"string"},"minAmountThreshold":{"type":"number"},"assetId":{"type":"string","x-fb-entity":"asset"}},"required":[]}}}],"output":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"total":{"description":"The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.","type":"string"},"balance":{"deprecated":true,"description":"Deprecated - replaced by \"total\"","type":"string"},"available":{"description":"Funds available for transfer. Equals the blockchain balance minus any locked amounts","type":"string"},"pending":{"description":"The cumulative balance of all transactions pending to be cleared","type":"string"},"frozen":{"description":"The cumulative frozen balance","type":"string"},"lockedAmount":{"description":"Funds in outgoing transactions that are not yet published to the network","type":"string"},"staked":{"description":"Staked balance","type":"string"},"totalStakedCPU":{"type":"number","description":"Deprecated"},"totalStakedNetwork":{"type":"string","description":"Deprecated"},"selfStakedCPU":{"type":"string","description":"Deprecated"},"selfStakedNetwork":{"type":"string","description":"Deprecated"},"pendingRefundCPU":{"type":"string","description":"Deprecated"},"pendingRefundNetwork":{"type":"string","description":"Deprecated"},"blockHeight":{"type":"string"},"blockHash":{"type":"string"},"rewardsInfo":{"type":"object","properties":{"pendingRewards":{"description":"Amount that is pending for rewards","type":"string"}}}}}},"hiddenOnUI":{"type":"boolean"},"customerRefId":{"type":"string"},"autoFuel":{"type":"boolean"}}}},"description":"List vault accounts.\n\nGets all vault accounts in your workspace."},{"method":"post","path":"/vault/accounts","name":"vault_accounts_post","parameters":[{"type":"object","properties":{"body":{}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"total":{"description":"The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.","type":"string"},"balance":{"deprecated":true,"description":"Deprecated - replaced by \"total\"","type":"string"},"available":{"description":"Funds available for transfer. Equals the blockchain balance minus any locked amounts","type":"string"},"pending":{"description":"The cumulative balance of all transactions pending to be cleared","type":"string"},"frozen":{"description":"The cumulative frozen balance","type":"string"},"lockedAmount":{"description":"Funds in outgoing transactions that are not yet published to the network","type":"string"},"staked":{"description":"Staked balance","type":"string"},"totalStakedCPU":{"type":"number","description":"Deprecated"},"totalStakedNetwork":{"type":"string","description":"Deprecated"},"selfStakedCPU":{"type":"string","description":"Deprecated"},"selfStakedNetwork":{"type":"string","description":"Deprecated"},"pendingRefundCPU":{"type":"string","description":"Deprecated"},"pendingRefundNetwork":{"type":"string","description":"Deprecated"},"blockHeight":{"type":"string"},"blockHash":{"type":"string"},"rewardsInfo":{"type":"object","properties":{"pendingRewards":{"description":"Amount that is pending for rewards","type":"string"}}}}}},"hiddenOnUI":{"type":"boolean"},"customerRefId":{"type":"string"},"autoFuel":{"type":"boolean"}}},"description":"Create a new vault account.\n\nCreates a new vault account with the requested name."},{"method":"get","path":"/vault/accounts_paged","name":"vault_accounts_paged_get","parameters":[{"type":"object","properties":{"query":{"type":"object","properties":{"namePrefix":{"type":"string"},"nameSuffix":{"type":"string"},"minAmountThreshold":{"type":"number"},"assetId":{"type":"string","x-fb-entity":"asset"},"before":{"type":"string"},"after":{"type":"string"},"limit":{"type":"number","minimum":1,"maximum":500,"default":200}},"required":[]}}}],"output":{"type":"object","properties":{"accounts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"total":{"description":"The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.","type":"string"},"balance":{"deprecated":true,"description":"Deprecated - replaced by \"total\"","type":"string"},"available":{"description":"Funds available for transfer. Equals the blockchain balance minus any locked amounts","type":"string"},"pending":{"description":"The cumulative balance of all transactions pending to be cleared","type":"string"},"frozen":{"description":"The cumulative frozen balance","type":"string"},"lockedAmount":{"description":"Funds in outgoing transactions that are not yet published to the network","type":"string"},"staked":{"description":"Staked balance","type":"string"},"totalStakedCPU":{"type":"number","description":"Deprecated"},"totalStakedNetwork":{"type":"string","description":"Deprecated"},"selfStakedCPU":{"type":"string","description":"Deprecated"},"selfStakedNetwork":{"type":"string","description":"Deprecated"},"pendingRefundCPU":{"type":"string","description":"Deprecated"},"pendingRefundNetwork":{"type":"string","description":"Deprecated"},"blockHeight":{"type":"string"},"blockHash":{"type":"string"},"rewardsInfo":{"type":"object","properties":{"pendingRewards":{"description":"Amount that is pending for rewards","type":"string"}}}}}},"hiddenOnUI":{"type":"boolean"},"customerRefId":{"type":"string"},"autoFuel":{"type":"boolean"}}}},"paging":{"type":"object","properties":{"before":{"type":"string"},"after":{"type":"string"}}},"previousUrl":{"type":"string"},"nextUrl":{"type":"string"}}},"description":"List vault acounts (Paginated).\n\nGets all vault accounts in your workspace. This endpoint returns a limited amount of results with a quick response time."},{"method":"get","path":"/vault/accounts/{vaultAccountId}","name":"vault_accounts_getByVaultaccountid","parameters":[{"type":"object","properties":{"vaultAccountId":{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account to return type: string"}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"total":{"description":"The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.","type":"string"},"balance":{"deprecated":true,"description":"Deprecated - replaced by \"total\"","type":"string"},"available":{"description":"Funds available for transfer. Equals the blockchain balance minus any locked amounts","type":"string"},"pending":{"description":"The cumulative balance of all transactions pending to be cleared","type":"string"},"frozen":{"description":"The cumulative frozen balance","type":"string"},"lockedAmount":{"description":"Funds in outgoing transactions that are not yet published to the network","type":"string"},"staked":{"description":"Staked balance","type":"string"},"totalStakedCPU":{"type":"number","description":"Deprecated"},"totalStakedNetwork":{"type":"string","description":"Deprecated"},"selfStakedCPU":{"type":"string","description":"Deprecated"},"selfStakedNetwork":{"type":"string","description":"Deprecated"},"pendingRefundCPU":{"type":"string","description":"Deprecated"},"pendingRefundNetwork":{"type":"string","description":"Deprecated"},"blockHeight":{"type":"string"},"blockHash":{"type":"string"},"rewardsInfo":{"type":"object","properties":{"pendingRewards":{"description":"Amount that is pending for rewards","type":"string"}}}}}},"hiddenOnUI":{"type":"boolean"},"customerRefId":{"type":"string"},"autoFuel":{"type":"boolean"}}},"description":"Find a vault account by ID.\n\nReturns the requested vault account."},{"method":"put","path":"/vault/accounts/{vaultAccountId}","name":"vault_accounts_putByVaultaccountid","parameters":[{"type":"object","properties":{"vaultAccountId":{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account to edit"},"body":{}}}],"description":"Rename a vault account.\n\nRenames the requested vault account."},{"method":"get","path":"/vault/asset_wallets","name":"vault_asset_wallets_get","parameters":[{"type":"object","properties":{"query":{"type":"object","properties":{"totalAmountLargerThan":{"type":"number","description":"When specified, only asset wallets with total balance larger than this amount are returned."},"assetId":{"type":"string","x-fb-entity":"asset","description":"When specified, only asset wallets cross vault accounts that have this asset ID are returned."},"before":{"type":"string","description":"Fetches the next paginated response before this element. This element is a cursor and is returned at the response of the previous page."},"after":{"type":"string","description":"Fetches the next paginated response after this element. This element is a cursor and is returned at the response of the previous page."},"limit":{"type":"number","minimum":1,"maximum":1000,"default":200,"description":"The maximum number of asset wallets in a single response. The default is 200 and the maximum is 1000."}},"required":[]}}}],"output":{"type":"object","properties":{"assetWallets":{"type":"array","items":{"type":"object","properties":{"vaultId":{"description":"ID of the vault account. You can [get the vault account by this ID](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid) to retrieve vault properties such as its name, auto fueling, hidden on UI or customer reference ID.","type":"string"},"assetId":{"description":"ID of the asset. You can get more information about this asset by using the [supported assets API](https://developers.fireblocks.com/reference/get_supported-assets)","type":"string"},"available":{"description":"Available balance, available to use in a transaction.","type":"string"},"total":{"description":"Total balance at the asset wallet, as seen at the blockchain explorers. This includes balance available, and any kind of unavailable balance such as locked, frozen, or others.","type":"string"},"pending":{"description":"Pending balance.","type":"string"},"staked":{"description":"Staked balance.","type":"string"},"frozen":{"description":"Funds frozen due to the anti-money laundering policy at this workspace.","type":"string"},"lockedAmount":{"description":"Locked balance.","type":"string"},"blockHeight":{"description":"The height (number) of the block of the balance. Can by empty.","type":"string"},"blockHash":{"description":"The hash of the block of the balance. Can by empty.","type":"string"},"creationTimestamp":{"description":"Unix timestamp of the time the asset wallet was created.","type":"string"}}}},"paging":{"type":"object","properties":{"before":{"description":"A string representing a cursor. Users can use this with a new request to this API endpoint as the “before” request parameter to fetch the previous page of results.","type":"string"},"after":{"description":"A string representing a cursor. Users can use this with a new request to this API endpoint as the “before” request parameter to fetch the next page of results.","type":"string"}}}}},"description":"List asset wallets (Paginated).\n\nGets all asset wallets at all of the vault accounts in your workspace. An asset wallet is an asset at a vault account. This method allows fast traversal of all account balances.\n**Note:**\n - This API endpoint is in limited availability and available for selected customers. If you would like to get early access to this endpoint, please reach out to [Fireblocks Support](https://support.fireblocks.io/hc/en-us/requests/new?ticket_form_id=36000337220)\n - This API call is subject to [rate limits](https://developers.fireblocks.com/reference/rate-limiting).\n"},{"method":"post","path":"/vault/accounts/{vaultAccountId}/hide","name":"vault_accounts_hide_postByVaultaccountid","parameters":[{"type":"object","properties":{"vaultAccountId":{"type":"string","minimum":1,"format":"numeric","x-fb-entity":"vault_account","description":"The vault account to hide"}}}],"description":"Hide a vault account in the console.\n\nHides the requested vault account from the web console view."},{"method":"post","path":"/vault/accounts/{vaultAccountId}/unhide","name":"vault_accounts_unhide_postByVaultaccountid","parameters":[{"type":"object","properties":{"vaultAccountId":{"type":"string","minimum":1,"format":"numeric","x-fb-entity":"vault_account","description":"The vault account to unhide"}}}],"description":"Unhide a vault account in the console.\n\nMakes a hidden vault account visible in web console view."},{"method":"post","path":"/vault/accounts/{vaultAccountId}/{assetId}/activate","name":"vault_accounts_activate_postByVaultaccountidAndAssetid","parameters":[{"type":"object","properties":{"vaultAccountId":{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account to return, or 'default' for the default vault account"},"assetId":{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"address":{"type":"string"},"legacyAddress":{"type":"string"},"enterpriseAddress":{"type":"string"},"tag":{"type":"string"},"eosAccountName":{"type":"string"},"status":{"type":"string"},"activationTxId":{"type":"string"}}},"description":"Activate a wallet in a vault account.\n\nInitiates activation for a wallet in a vault account."},{"method":"post","path":"/vault/accounts/{vaultAccountId}/set_customer_ref_id","name":"vault_accounts_set_customer_ref_id_postByVaultaccountid","parameters":[{"type":"object","properties":{"vaultAccountId":{"type":"string","minimum":1,"format":"numeric","x-fb-entity":"vault_account","description":"The vault account ID"},"body":{}}}],"description":"Set an AML/KYT customer reference ID for a vault account.\n\nAssigns an AML/KYT customer reference ID for the vault account."},{"method":"post","path":"/vault/accounts/{vaultAccountId}/set_auto_fuel","name":"vault_accounts_set_auto_fuel_postByVaultaccountid","parameters":[{"type":"object","properties":{"vaultAccountId":{"type":"string","minimum":1,"format":"numeric","x-fb-entity":"vault_account","description":"The vault account ID"},"body":{}}}],"description":"Turn autofueling on or off.\n\nSets the autofueling property of the vault account to enabled or disabled."},{"method":"get","path":"/vault/accounts/{vaultAccountId}/{assetId}","name":"vault_accounts_getByVaultaccountidAndAssetid","parameters":[{"type":"object","properties":{"vaultAccountId":{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account to return"},"assetId":{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"total":{"description":"The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.","type":"string"},"balance":{"deprecated":true,"description":"Deprecated - replaced by \"total\"","type":"string"},"available":{"description":"Funds available for transfer. Equals the blockchain balance minus any locked amounts","type":"string"},"pending":{"description":"The cumulative balance of all transactions pending to be cleared","type":"string"},"frozen":{"description":"The cumulative frozen balance","type":"string"},"lockedAmount":{"description":"Funds in outgoing transactions that are not yet published to the network","type":"string"},"staked":{"description":"Staked balance","type":"string"},"totalStakedCPU":{"type":"number","description":"Deprecated"},"totalStakedNetwork":{"type":"string","description":"Deprecated"},"selfStakedCPU":{"type":"string","description":"Deprecated"},"selfStakedNetwork":{"type":"string","description":"Deprecated"},"pendingRefundCPU":{"type":"string","description":"Deprecated"},"pendingRefundNetwork":{"type":"string","description":"Deprecated"},"blockHeight":{"type":"string"},"blockHash":{"type":"string"},"rewardsInfo":{"type":"object","properties":{"pendingRewards":{"description":"Amount that is pending for rewards","type":"string"}}}}},"description":"Get the asset balance for a vault account.\n\nReturns a wallet for a specific asset of a vault account."},{"method":"post","path":"/vault/accounts/{vaultAccountId}/{assetId}","name":"vault_accounts_postByVaultaccountidAndAssetid","parameters":[{"type":"object","properties":{"vaultAccountId":{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account to return, or 'default' for the default vault account"},"assetId":{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"},"body":{}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"address":{"type":"string"},"legacyAddress":{"type":"string"},"enterpriseAddress":{"type":"string"},"tag":{"type":"string"},"eosAccountName":{"type":"string"},"status":{"type":"string"},"activationTxId":{"type":"string"}}},"description":"Create a new wallet.\n\nCreates a wallet for a specific asset in a vault account."},{"method":"post","path":"/vault/accounts/{vaultAccountId}/{assetId}/balance","name":"vault_accounts_balance_postByVaultaccountidAndAssetid","parameters":[{"type":"object","properties":{"vaultAccountId":{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account to return"},"assetId":{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"},"body":{"type":"object"}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"total":{"description":"The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.","type":"string"},"balance":{"deprecated":true,"description":"Deprecated - replaced by \"total\"","type":"string"},"available":{"description":"Funds available for transfer. Equals the blockchain balance minus any locked amounts","type":"string"},"pending":{"description":"The cumulative balance of all transactions pending to be cleared","type":"string"},"frozen":{"description":"The cumulative frozen balance","type":"string"},"lockedAmount":{"description":"Funds in outgoing transactions that are not yet published to the network","type":"string"},"staked":{"description":"Staked balance","type":"string"},"totalStakedCPU":{"type":"number","description":"Deprecated"},"totalStakedNetwork":{"type":"string","description":"Deprecated"},"selfStakedCPU":{"type":"string","description":"Deprecated"},"selfStakedNetwork":{"type":"string","description":"Deprecated"},"pendingRefundCPU":{"type":"string","description":"Deprecated"},"pendingRefundNetwork":{"type":"string","description":"Deprecated"},"blockHeight":{"type":"string"},"blockHash":{"type":"string"},"rewardsInfo":{"type":"object","properties":{"pendingRewards":{"description":"Amount that is pending for rewards","type":"string"}}}}},"description":"Refresh asset balance data.\n\nUpdates the balance of a specific asset in a vault account."},{"method":"get","path":"/vault/accounts/{vaultAccountId}/{assetId}/addresses","name":"vault_accounts_addresses_getByVaultaccountidAndAssetid","parameters":[{"type":"object","properties":{"vaultAccountId":{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account to return"},"assetId":{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"}}}],"output":{"type":"array","items":{"type":"object","properties":{"assetId":{"type":"string","x-fb-entity":"asset"},"address":{"type":"string"},"description":{"type":"string"},"tag":{"type":"string"},"type":{"type":"string"},"customerRefId":{"type":"string"},"addressFormat":{"type":"string","enum":["SEGWIT","LEGACY"]},"legacyAddress":{"type":"string"},"enterpriseAddress":{"type":"string"},"bip44AddressIndex":{"type":"integer"},"userDefined":{"type":"boolean"}}}},"description":"Get asset addresses.\n\nLists all addresses for specific asset of vault account."},{"method":"post","path":"/vault/accounts/{vaultAccountId}/{assetId}/addresses","name":"vault_accounts_addresses_postByVaultaccountidAndAssetid","parameters":[{"type":"object","properties":{"vaultAccountId":{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account to return"},"assetId":{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"},"body":{}}}],"output":{"type":"object","properties":{"address":{"type":"string"},"legacyAddress":{"type":"string"},"enterpriseAddress":{"type":"string"},"tag":{"type":"string"},"bip44AddressIndex":{"type":"integer"}}},"description":"Create new asset deposit address.\n\nCreates a new deposit address for an asset of a vault account."},{"method":"get","path":"/vault/accounts/{vaultAccountId}/{assetId}/max_spendable_amount","name":"vault_accounts_max_spendable_amount_getByVaultaccountidAndAssetid","parameters":[{"type":"object","properties":{"vaultAccountId":{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account, or 'default' for the default vault account"},"assetId":{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"},"query":{"type":"object","properties":{"manualSignging":{"type":"boolean","description":"False by default. The maximum number of inputs depends if the transaction will be signed by an automated co-signer server or on a mobile device."}},"required":[]}}}],"description":"Get the maximum spendable amount in a single transaction.\n\nGet the maximum amount of a particular asset that can be spent in a single transaction from a specified vault account (UTXO assets only, with a limitation on number of inputs embedded). Send several transactions if you want to spend more than the maximum spendable amount."},{"method":"put","path":"/vault/accounts/{vaultAccountId}/{assetId}/addresses/{addressId}","name":"vault_accounts_addresses_putByVaultaccountidAndAssetidAndAddressid","parameters":[{"type":"object","properties":{"vaultAccountId":{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account"},"assetId":{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"},"addressId":{"type":"string","description":"The address for which to add a description. For XRP, use
:, for all other assets, use only the address"},"body":{}}}],"description":"Update address description.\n\nUpdates the description of an existing address of an asset in a vault account."},{"method":"post","path":"/vault/accounts/{vaultAccountId}/{assetId}/addresses/{addressId}/set_customer_ref_id","name":"vault_accounts_addresses_set_customer_ref_id_postByVaultaccountidAndAssetidAndAddressid","parameters":[{"type":"object","properties":{"vaultAccountId":{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account"},"assetId":{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"},"addressId":{"type":"string","description":"The address for which to add a description. For XRP, use
:, for all other assets, use only the address"},"body":{}}}],"description":"Assign AML customer reference ID.\n\nSets an AML/KYT customer reference ID for a specific address."},{"method":"post","path":"/vault/accounts/{vaultAccountId}/{assetId}/addresses/{addressId}/create_legacy","name":"vault_accounts_addresses_create_legacy_postByVaultaccountidAndAssetidAndAddressid","parameters":[{"type":"object","properties":{"vaultAccountId":{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account"},"assetId":{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"},"addressId":{"type":"string","description":"The segwit address to translate"}}}],"output":{"type":"object","properties":{"address":{"type":"string"},"legacyAddress":{"type":"string"},"enterpriseAddress":{"type":"string"},"tag":{"type":"string"},"bip44AddressIndex":{"type":"integer"}}},"description":"Convert a segwit address to legacy format.\n\nConverts an existing segwit address to the legacy format."},{"method":"get","path":"/vault/accounts/{vaultAccountId}/{assetId}/unspent_inputs","name":"vault_accounts_unspent_inputs_getByVaultaccountidAndAssetid","parameters":[{"type":"object","properties":{"vaultAccountId":{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account"},"assetId":{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"}}}],"output":{"type":"array","items":{"type":"object","properties":{"input":{"type":"object","properties":{"txHash":{"type":"string"},"index":{"type":"number"}}},"address":{"type":"string"},"amount":{"type":"string"},"confirmations":{"type":"number"},"status":{"type":"string"}}}},"description":"Get UTXO unspent inputs information.\n\nReturns unspent inputs information of an asset in a vault account."},{"method":"get","path":"/vault/public_key_info/","name":"vault_public_key_info_get","parameters":[{"type":"object","properties":{"query":{"type":"object","properties":{"derivationPath":{"type":"string"},"algorithm":{"type":"string"},"compressed":{"type":"boolean"}},"required":["derivationPath","algorithm"]}}}],"output":{"type":"object","properties":{"algorithm":{"type":"string"},"derivationPath":{"type":"array","items":{"type":"number"}},"publicKey":{"type":"string"}}},"description":"Get the public key information.\n\nGets the public key information based on derivation path and signing algorithm."},{"method":"get","path":"/vault/accounts/{vaultAccountId}/{assetId}/{change}/{addressIndex}/public_key_info","name":"vault_accounts_public_key_info_getByVaultaccountidAndAssetidAndChangeAndAddressindex","parameters":[{"type":"object","properties":{"vaultAccountId":{"type":"string","format":"numeric","x-fb-entity":"vault_account"},"assetId":{"type":"string","x-fb-entity":"asset"},"change":{"type":"number"},"addressIndex":{"type":"number"},"query":{"type":"object","properties":{"compressed":{"type":"boolean"}},"required":[]}}}],"output":{"type":"object","properties":{"algorithm":{"type":"string"},"derivationPath":{"type":"array","items":{"type":"number"}},"publicKey":{"type":"string"}}},"description":"Get the public key for a vault account.\n\nGets the public key information for the vault account."},{"method":"get","path":"/vault/assets","name":"vault_assets_get","parameters":[{"type":"object","properties":{"query":{"type":"object","properties":{"accountNamePrefix":{"type":"string"},"accountNameSuffix":{"type":"string"}},"required":[]}}}],"output":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"total":{"description":"The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.","type":"string"},"balance":{"deprecated":true,"description":"Deprecated - replaced by \"total\"","type":"string"},"available":{"description":"Funds available for transfer. Equals the blockchain balance minus any locked amounts","type":"string"},"pending":{"description":"The cumulative balance of all transactions pending to be cleared","type":"string"},"frozen":{"description":"The cumulative frozen balance","type":"string"},"lockedAmount":{"description":"Funds in outgoing transactions that are not yet published to the network","type":"string"},"staked":{"description":"Staked balance","type":"string"},"totalStakedCPU":{"type":"number","description":"Deprecated"},"totalStakedNetwork":{"type":"string","description":"Deprecated"},"selfStakedCPU":{"type":"string","description":"Deprecated"},"selfStakedNetwork":{"type":"string","description":"Deprecated"},"pendingRefundCPU":{"type":"string","description":"Deprecated"},"pendingRefundNetwork":{"type":"string","description":"Deprecated"},"blockHeight":{"type":"string"},"blockHash":{"type":"string"},"rewardsInfo":{"type":"object","properties":{"pendingRewards":{"description":"Amount that is pending for rewards","type":"string"}}}}}},"description":"Get asset balance for chosen assets.\n\nGets the assets amount summary for all accounts or filtered accounts."},{"method":"get","path":"/vault/assets/{assetId}","name":"vault_assets_getByAssetid","parameters":[{"type":"object","properties":{"assetId":{"type":"string","x-fb-entity":"asset"}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"total":{"description":"The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.","type":"string"},"balance":{"deprecated":true,"description":"Deprecated - replaced by \"total\"","type":"string"},"available":{"description":"Funds available for transfer. Equals the blockchain balance minus any locked amounts","type":"string"},"pending":{"description":"The cumulative balance of all transactions pending to be cleared","type":"string"},"frozen":{"description":"The cumulative frozen balance","type":"string"},"lockedAmount":{"description":"Funds in outgoing transactions that are not yet published to the network","type":"string"},"staked":{"description":"Staked balance","type":"string"},"totalStakedCPU":{"type":"number","description":"Deprecated"},"totalStakedNetwork":{"type":"string","description":"Deprecated"},"selfStakedCPU":{"type":"string","description":"Deprecated"},"selfStakedNetwork":{"type":"string","description":"Deprecated"},"pendingRefundCPU":{"type":"string","description":"Deprecated"},"pendingRefundNetwork":{"type":"string","description":"Deprecated"},"blockHeight":{"type":"string"},"blockHash":{"type":"string"},"rewardsInfo":{"type":"object","properties":{"pendingRewards":{"description":"Amount that is pending for rewards","type":"string"}}}}},"description":"Get vault balance by asset.\n\nGets the vault balance summary for an asset."},{"method":"get","path":"/exchange_accounts","name":"exchange_accounts_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["BINANCE","BINANCEUS","BITFINEX","BITHUMB","BITMEX","BITSO","BITSTAMP","BITTREX","CIRCLE","COINBASEPRO","COINMETRO","COINSPRO","CRYPTOCOM","DERIBIT","FTX","FIXUS","GEMINI","HITBTC","HUOBI","KORBIT","KRAKEN","LIQUID","POLONIEX","OKCOIN","OKEX","SEEDCX"]},"name":{"type":"string","description":"Display name of the exchange account"},"status":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"total":{"type":"string"},"available":{"type":"string"}}}},"tradingAccounts":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"total":{"type":"string"},"available":{"type":"string"}}}}}}},"isSubaccount":{"type":"boolean","description":"True if the account is a subaccount in an exchange"},"mainAccountId":{"description":"if the account is a sub-account, the ID of the main account","type":"string"}}}},"description":"List exchange accounts.\n\nReturns all exchange accounts."},{"method":"get","path":"/exchange_accounts/{exchangeAccountId}","name":"exchange_accounts_getByExchangeaccountid","parameters":[{"type":"object","properties":{"exchangeAccountId":{"type":"string","minimum":1,"description":"The ID of the exchange account to return"}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["BINANCE","BINANCEUS","BITFINEX","BITHUMB","BITMEX","BITSO","BITSTAMP","BITTREX","CIRCLE","COINBASEPRO","COINMETRO","COINSPRO","CRYPTOCOM","DERIBIT","FTX","FIXUS","GEMINI","HITBTC","HUOBI","KORBIT","KRAKEN","LIQUID","POLONIEX","OKCOIN","OKEX","SEEDCX"]},"name":{"type":"string","description":"Display name of the exchange account"},"status":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"total":{"type":"string"},"available":{"type":"string"}}}},"tradingAccounts":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"total":{"type":"string"},"available":{"type":"string"}}}}}}},"isSubaccount":{"type":"boolean","description":"True if the account is a subaccount in an exchange"},"mainAccountId":{"description":"if the account is a sub-account, the ID of the main account","type":"string"}}},"description":"Find a specific exchange account.\n\nReturns an exchange account by ID."},{"method":"post","path":"/exchange_accounts/{exchangeAccountId}/internal_transfer","name":"exchange_accounts_internal_transfer_postByExchangeaccountid","parameters":[{"type":"object","properties":{"exchangeAccountId":{"type":"string","minimum":1,"description":"The ID of the exchange account to return"},"body":{}}}],"description":"Internal tranfer for exchange accounts.\n\nTransfers funds between trading accounts under the same exchange account."},{"method":"post","path":"/exchange_accounts/{exchangeAccountId}/convert","name":"exchange_accounts_convert_postByExchangeaccountid","parameters":[{"type":"object","properties":{"exchangeAccountId":{"type":"string","minimum":1,"description":"The ID of the exchange account. Please make sure the exchange supports conversions. To find the ID of your exchange account, use GET/exchange_accounts."},"body":{}}}],"description":"Convert exchange account funds from the source asset to the destination asset. Coinbase (USD to USDC, USDC to USD) and Bitso (MXN to USD) are supported conversions."},{"method":"get","path":"/exchange_accounts/{exchangeAccountId}/{assetId}","name":"exchange_accounts_getByExchangeaccountidAndAssetid","parameters":[{"type":"object","properties":{"exchangeAccountId":{"type":"string","minimum":1,"description":"The ID of the exchange account to return"},"assetId":{"type":"string","minimum":1,"description":"The ID of the asset to return"}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"total":{"type":"string"},"available":{"type":"string"}}},"description":"Find an asset for an exchange account.\n\nReturns an asset for an exchange account."},{"method":"get","path":"/fiat_accounts","name":"fiat_accounts_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["BLINC"]},"name":{"type":"string","description":"Display name of the fiat account"},"address":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"}}}}}}},"description":"List fiat accounts.\n\nReturns all fiat accounts."},{"method":"get","path":"/fiat_accounts/{accountId}","name":"fiat_accounts_getByAccountid","parameters":[{"type":"object","properties":{"accountId":{"type":"string","minimum":1,"description":"The ID of the fiat account to return"}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["BLINC"]},"name":{"type":"string","description":"Display name of the fiat account"},"address":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"}}}}}},"description":"Find a specific fiat account.\n\nReturns a fiat account by ID."},{"method":"post","path":"/fiat_accounts/{accountId}/redeem_to_linked_dda","name":"fiat_accounts_redeem_to_linked_dda_postByAccountid","parameters":[{"type":"object","properties":{"accountId":{"type":"string","minimum":1,"description":"The ID of the fiat account to use"},"body":{}}}],"description":"Redeem funds to DDA.\n\nRedeems funds to the linked DDA."},{"method":"post","path":"/fiat_accounts/{accountId}/deposit_from_linked_dda","name":"fiat_accounts_deposit_from_linked_dda_postByAccountid","parameters":[{"type":"object","properties":{"accountId":{"type":"string","minimum":1,"description":"The ID of the fiat account to use"},"body":{}}}],"description":"Deposit funds from DDA.\n\nDeposits funds from the linked DDA."},{"method":"get","path":"/network_connections","name":"network_connections_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"localChannel":{"deprecated":true,"description":"Deprecated - Replaced by `localNetworkId`","type":"object","properties":{"networkId":{"type":"string"},"name":{"type":"string"}}},"remoteChannel":{"deprecated":true,"description":"Deprecated - Replaced by `remoteNetworkId`","type":"object","properties":{"networkId":{"type":"string"},"name":{"type":"string"}}},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"localNetworkId":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"remoteNetworkId":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"routingPolicy":{"type":"object","properties":{"crypto":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["VAULT","EXCHANGE"],"description":"The type of destination account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the destination account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"signet":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]}]},"signet_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]}]}}}},"required":["id","localNetworkId","remoteNetworkId","routingPolicy","status"]}},"description":"List network connections.\n\nReturns all network connections.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"post","path":"/network_connections","name":"network_connections_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"localNetworkId":{"type":"string","description":"The network ID of the profile trying to create the connection."},"remoteNetworkId":{"type":"string","description":"The network ID the profile is attempting to connect to."},"routingPolicy":{"type":"object","properties":{"crypto":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["VAULT","EXCHANGE"],"description":"The type of destination account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the destination account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"signet":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]}]},"signet_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]}]}}}},"required":["localNetworkId","remoteNetworkId"]}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"localChannel":{"deprecated":true,"description":"Deprecated - Replaced by `localNetworkId`","type":"object","properties":{"networkId":{"type":"string"},"name":{"type":"string"}}},"remoteChannel":{"deprecated":true,"description":"Deprecated - Replaced by `remoteNetworkId`","type":"object","properties":{"networkId":{"type":"string"},"name":{"type":"string"}}},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"localNetworkId":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"remoteNetworkId":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"routingPolicy":{"type":"object","properties":{"crypto":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["VAULT","EXCHANGE"],"description":"The type of destination account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the destination account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"signet":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]}]},"signet_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]}]}}}},"required":["id","localNetworkId","remoteNetworkId","routingPolicy","status"]},"description":"Creates a new network connection.\n\nInitiates a new network connection.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"patch","path":"/network_connections/{connectionId}/set_routing_policy","name":"network_connections_set_routing_policy_patchByConnectionid","parameters":[{"type":"object","properties":{"connectionId":{"type":"string","minimum":1,"description":"The ID of the network connection"},"body":{}}}],"output":{},"description":"Update network connection routing policy.\n\nUpdates an existing network connection's routing policy.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"get","path":"/network_connections/{connectionId}/is_third_party_routing/{assetType}","name":"network_connections_is_third_party_routing_getByConnectionidAndAssettype","parameters":[{"type":"object","properties":{"connectionId":{"type":"string","minimum":1,"description":"The ID of the network connection"},"assetType":{"type":"string","enum":["CRYPTO","SIGNET","SEN","SIGNET_TEST","SEN_TEST"],"description":"The destination asset type"}}}],"output":{},"description":"Retrieve third-party network routing validation by asset type.\n\nThe Fireblocks Network allows for flexibility around incoming deposits. A receiver can receive network deposits to locations other than Fireblocks. This endpoint validates whether future transactions are routed to the displayed recipient or to a 3rd party."},{"method":"get","path":"/network_connections/{connectionId}","name":"network_connections_getByConnectionid","parameters":[{"type":"object","properties":{"connectionId":{"type":"string","minimum":1,"description":"The ID of the connection"}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"localChannel":{"deprecated":true,"description":"Deprecated - Replaced by `localNetworkId`","type":"object","properties":{"networkId":{"type":"string"},"name":{"type":"string"}}},"remoteChannel":{"deprecated":true,"description":"Deprecated - Replaced by `remoteNetworkId`","type":"object","properties":{"networkId":{"type":"string"},"name":{"type":"string"}}},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"localNetworkId":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"remoteNetworkId":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"routingPolicy":{"type":"object","properties":{"crypto":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["VAULT","EXCHANGE"],"description":"The type of destination account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the destination account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"signet":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]}]},"signet_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]}]}}}},"required":["id","localNetworkId","remoteNetworkId","routingPolicy","status"]},"description":"Get a network connection.\n\nGets a network connection by ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"delete","path":"/network_connections/{connectionId}","name":"network_connections_eraseByConnectionid","parameters":[{"type":"object","properties":{"connectionId":{"type":"string","minimum":1,"description":"The ID of the network connection to delete"}}}],"output":{},"description":"Deletes a network connection by ID.\n\nDeletes an existing network connection specified by its connection ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"get","path":"/network_ids","name":"network_ids_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"array","items":{}},"description":"Returns all network IDs, both local IDs and discoverable remote IDs.\n\nRetrieves a list of all local and discoverable remote network IDs.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"post","path":"/network_ids","name":"network_ids_post","parameters":[{"type":"object","properties":{"body":{}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"routingPolicy":{"type":"object","properties":{"crypto":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["VAULT","EXCHANGE"],"description":"The type of destination account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the destination account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"signet":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]}]},"signet_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]}]}}},"isDiscoverable":{"type":"boolean","description":"The specific network is discoverable."}}},"description":"Creates a new Network ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"get","path":"/network_ids/{networkId}","name":"network_ids_getByNetworkid","parameters":[{"type":"object","properties":{"networkId":{"type":"string","minimum":1,"description":"The ID of the network"}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"routingPolicy":{"type":"object","properties":{"crypto":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["VAULT","EXCHANGE"],"description":"The type of destination account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the destination account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"signet":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]}]},"signet_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]}]}}},"isDiscoverable":{"type":"boolean","description":"The specific network is discoverable."}}},"description":"Returns specific network ID.\n\nRetrieves a network by its ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"delete","path":"/network_ids/{networkId}","name":"network_ids_eraseByNetworkid","parameters":[{"type":"object","properties":{"networkId":{"type":"string","minimum":1,"description":"The ID of the network"}}}],"output":{},"description":"Deletes specific network ID.\n\nDeletes a network by its ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"patch","path":"/network_ids/{networkId}/set_routing_policy","name":"network_ids_set_routing_policy_patchByNetworkid","parameters":[{"type":"object","properties":{"networkId":{"type":"string","minimum":1,"description":"The ID of the network"},"body":{}}}],"output":{},"description":"Update network id routing policy.\n\nUpdates the routing policy of a specified network ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"patch","path":"/network_ids/{networkId}/set_discoverability","name":"network_ids_set_discoverability_patchByNetworkid","parameters":[{"type":"object","properties":{"networkId":{"type":"string","minimum":1,"description":"The ID of the network"},"body":{}}}],"output":{},"description":"Update network ID's discoverability.\n\nUpdate whether or not the network ID is discoverable by others.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"patch","path":"/network_ids/{networkId}/set_name","name":"network_ids_set_name_patchByNetworkid","parameters":[{"type":"object","properties":{"networkId":{"type":"string","minimum":1,"description":"The ID of the network"},"body":{}}}],"output":{},"description":"Update network ID's name.\n\nUpdates name of a specified network ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"get","path":"/internal_wallets","name":"internal_wallets_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"customerRefId":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}}}},"required":["id","name","status"]}},"description":"List internal wallets.\n\nGets a list of internal wallets.\n\n**Note**: BTC-based assets belonging to whitelisted addresses cannot be retrieved between 00:00 UTC and 00:01 UTC daily due to third-party provider, Blockchair, being unavailable for this 60 second period. Please wait until the next minute to retrieve BTC-based assets.\n"},{"method":"post","path":"/internal_wallets","name":"internal_wallets_post","parameters":[{"type":"object","properties":{"body":{}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"customerRefId":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}}}},"required":["id","name","status"]},"description":"Create an internal wallet.\n\nCreates a new internal wallet with the requested name."},{"method":"get","path":"/internal_wallets/{walletId}","name":"internal_wallets_getByWalletid","parameters":[{"type":"object","properties":{"walletId":{"type":"string","minimum":1,"description":"The ID of the wallet to return"}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"customerRefId":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}}}},"required":["id","name","status"]},"description":"Get assets for internal wallet.\n\nReturns all assets in an internal wallet by ID."},{"method":"delete","path":"/internal_wallets/{walletId}","name":"internal_wallets_eraseByWalletid","parameters":[{"type":"object","properties":{"walletId":{"type":"string","minimum":1,"description":"The ID of the wallet to delete"}}}],"description":"Delete an internal wallet.\n\nDeletes an internal wallet by ID."},{"method":"post","path":"/internal_wallets/{walletId}/set_customer_ref_id","name":"internal_wallets_set_customer_ref_id_postByWalletid","parameters":[{"type":"object","properties":{"walletId":{"type":"string","minimum":1,"description":"The wallet ID"},"body":{}}}],"description":"Set an AML/KYT customer reference ID for an internal wallet.\n\nSets an AML/KYT customer reference ID for the specific internal wallet."},{"method":"get","path":"/internal_wallets/{walletId}/{assetId}","name":"internal_wallets_getByWalletidAndAssetid","parameters":[{"type":"object","properties":{"walletId":{"type":"string","minimum":1,"description":"The ID of the wallet"},"assetId":{"type":"string","minimum":1,"x-fb-entity":"asset","description":"The ID of the asset to return"}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}},"description":"Get an asset from an internal wallet.\n\nReturns information for an asset in an internal wallet."},{"method":"post","path":"/internal_wallets/{walletId}/{assetId}","name":"internal_wallets_postByWalletidAndAssetid","parameters":[{"type":"object","properties":{"walletId":{"type":"string","description":"The ID of the wallet"},"assetId":{"type":"string","x-fb-entity":"asset","description":"The ID of the asset to add"},"body":{}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}},"description":"Add an asset to an internal wallet.\n\nAdds an asset to an existing internal wallet."},{"method":"delete","path":"/internal_wallets/{walletId}/{assetId}","name":"internal_wallets_eraseByWalletidAndAssetid","parameters":[{"type":"object","properties":{"walletId":{"type":"string","minimum":1,"description":"The ID of the wallet"},"assetId":{"type":"string","minimum":1,"x-fb-entity":"asset","description":"The ID of the asset to delete"}}}],"description":"Delete a whitelisted address from an internal wallet.\n\nDeletes a whitelisted address (for an asset) from an internal wallet."},{"method":"get","path":"/external_wallets","name":"external_wallets_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"customerRefId":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}}}},"required":["id","name","status"]}},"description":"List external wallets.\n\nGets a list of external wallets under the workspace."},{"method":"post","path":"/external_wallets","name":"external_wallets_post","parameters":[{"type":"object","properties":{"body":{}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"customerRefId":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}}}},"required":["id","name","status"]},"description":"Create an external wallet.\n\nCreates a new external wallet with the requested name."},{"method":"get","path":"/external_wallets/{walletId}","name":"external_wallets_getByWalletid","parameters":[{"type":"object","properties":{"walletId":{"type":"string","minimum":1,"description":"The ID of the wallet to return"}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"customerRefId":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}}}},"required":["id","name","status"]},"description":"Find an external wallet.\n\nReturns an external wallet by ID."},{"method":"delete","path":"/external_wallets/{walletId}","name":"external_wallets_eraseByWalletid","parameters":[{"type":"object","properties":{"walletId":{"type":"string","minimum":1,"description":"The ID of the wallet to delete"}}}],"description":"Delete an external wallet.\n\nDeletes an external wallet by ID."},{"method":"post","path":"/external_wallets/{walletId}/set_customer_ref_id","name":"external_wallets_set_customer_ref_id_postByWalletid","parameters":[{"type":"object","properties":{"walletId":{"type":"string","minimum":1,"description":"The wallet ID"},"body":{}}}],"description":"Set an AML customer reference ID for an external wallet.\n\nSets an AML/KYT customer reference ID for the specific external wallet."},{"method":"get","path":"/external_wallets/{walletId}/{assetId}","name":"external_wallets_getByWalletidAndAssetid","parameters":[{"type":"object","properties":{"walletId":{"type":"string","minimum":1,"description":"The ID of the wallet"},"assetId":{"type":"string","minimum":1,"x-fb-entity":"asset","description":"The ID of the asset to return"}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"},"additionalInfo":{"type":"array","items":{"type":"object","properties":{"accountHolderGivenName":{"type":"string"},"accountHolderSurname":{"type":"string"},"accountHolderCity":{"type":"string"},"accountHolderCountry":{"type":"string"},"accountHolderAddress1":{"type":"string"},"accountHolderAddress2":{"type":"string"},"accountHolderDistrict":{"type":"string"},"accountHolderPostalCode":{"type":"string"},"abaRoutingNumber":{"type":"string"},"abaAccountNumber":{"type":"string"},"abaCountry":{"type":"string"},"iban":{"type":"string"},"ibanCity":{"type":"string"},"ibanCountry":{"type":"string"},"speiClabe":{"type":"string"},"speiName":{"type":"string"}}}}}},"description":"Get an asset from an external wallet.\n\nReturns an external wallet by wallet ID and asset ID."},{"method":"post","path":"/external_wallets/{walletId}/{assetId}","name":"external_wallets_postByWalletidAndAssetid","parameters":[{"type":"object","properties":{"walletId":{"type":"string","description":"The ID of the wallet"},"assetId":{"type":"string","x-fb-entity":"asset","description":"The ID of the asset to add"},"body":{}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"},"additionalInfo":{"type":"array","items":{"type":"object","properties":{"accountHolderGivenName":{"type":"string"},"accountHolderSurname":{"type":"string"},"accountHolderCity":{"type":"string"},"accountHolderCountry":{"type":"string"},"accountHolderAddress1":{"type":"string"},"accountHolderAddress2":{"type":"string"},"accountHolderDistrict":{"type":"string"},"accountHolderPostalCode":{"type":"string"},"abaRoutingNumber":{"type":"string"},"abaAccountNumber":{"type":"string"},"abaCountry":{"type":"string"},"iban":{"type":"string"},"ibanCity":{"type":"string"},"ibanCountry":{"type":"string"},"speiClabe":{"type":"string"},"speiName":{"type":"string"}}}}}},"description":"Add an asset to an external wallet.\n\nAdds an asset to an existing external wallet."},{"method":"delete","path":"/external_wallets/{walletId}/{assetId}","name":"external_wallets_eraseByWalletidAndAssetid","parameters":[{"type":"object","properties":{"walletId":{"type":"string","minimum":1,"description":"The ID of the wallet"},"assetId":{"type":"string","minimum":1,"x-fb-entity":"asset","description":"The ID of the asset to delete"}}}],"description":"Delete an asset from an external wallet.\n\nDeletes an external wallet asset by ID."},{"method":"get","path":"/contracts","name":"contracts_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"customerRefId":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}}}},"required":["id","name","status"]}},"description":"List contracts.\n\nGets a list of contracts."},{"method":"post","path":"/contracts","name":"contracts_post","parameters":[{"type":"object","properties":{"body":{}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"customerRefId":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}}}},"required":["id","name","status"]},"description":"Create a contract.\n\nCreates a new contract."},{"method":"get","path":"/contracts/{contractId}","name":"contracts_getByContractid","parameters":[{"type":"object","properties":{"contractId":{"type":"string","minimum":1,"description":"The ID of the contract to return"}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"customerRefId":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}}}},"required":["id","name","status"]},"description":"Find a specific contract.\n\nReturns a contract by ID."},{"method":"delete","path":"/contracts/{contractId}","name":"contracts_eraseByContractid","parameters":[{"type":"object","properties":{"contractId":{"type":"string","minimum":1,"description":"The ID of the contract to delete"}}}],"description":"Delete a contract.\n\nDeletes a contract by ID."},{"method":"get","path":"/contracts/{contractId}/{assetId}","name":"contracts_getByContractidAndAssetid","parameters":[{"type":"object","properties":{"contractId":{"type":"string","minimum":1,"description":"The ID of the contract"},"assetId":{"type":"string","minimum":1,"x-fb-entity":"asset","description":"The ID of the asset to return"}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"},"additionalInfo":{"type":"array","items":{"type":"object","properties":{"accountHolderGivenName":{"type":"string"},"accountHolderSurname":{"type":"string"},"accountHolderCity":{"type":"string"},"accountHolderCountry":{"type":"string"},"accountHolderAddress1":{"type":"string"},"accountHolderAddress2":{"type":"string"},"accountHolderDistrict":{"type":"string"},"accountHolderPostalCode":{"type":"string"},"abaRoutingNumber":{"type":"string"},"abaAccountNumber":{"type":"string"},"abaCountry":{"type":"string"},"iban":{"type":"string"},"ibanCity":{"type":"string"},"ibanCountry":{"type":"string"},"speiClabe":{"type":"string"},"speiName":{"type":"string"}}}}}},"description":"Find a contract asset.\n\nReturns a contract asset by ID."},{"method":"post","path":"/contracts/{contractId}/{assetId}","name":"contracts_postByContractidAndAssetid","parameters":[{"type":"object","properties":{"contractId":{"type":"string","description":"The ID of the contract"},"assetId":{"type":"string","x-fb-entity":"asset","description":"The ID of the asset to add"},"body":{}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"},"additionalInfo":{"type":"array","items":{"type":"object","properties":{"accountHolderGivenName":{"type":"string"},"accountHolderSurname":{"type":"string"},"accountHolderCity":{"type":"string"},"accountHolderCountry":{"type":"string"},"accountHolderAddress1":{"type":"string"},"accountHolderAddress2":{"type":"string"},"accountHolderDistrict":{"type":"string"},"accountHolderPostalCode":{"type":"string"},"abaRoutingNumber":{"type":"string"},"abaAccountNumber":{"type":"string"},"abaCountry":{"type":"string"},"iban":{"type":"string"},"ibanCity":{"type":"string"},"ibanCountry":{"type":"string"},"speiClabe":{"type":"string"},"speiName":{"type":"string"}}}}}},"description":"Add an asset to a contract.\n\nAdds an asset to an existing contract."},{"method":"delete","path":"/contracts/{contractId}/{assetId}","name":"contracts_eraseByContractidAndAssetid","parameters":[{"type":"object","properties":{"contractId":{"type":"string","minimum":1,"description":"The ID of the contract"},"assetId":{"type":"string","minimum":1,"x-fb-entity":"asset","description":"The ID of the asset to delete"}}}],"description":"Delete a contract asset.\n\nDeletes a contract asset by ID."},{"method":"get","path":"/supported_assets","name":"supported_assets_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["ALGO_ASSET","BASE_ASSET","BEP20","COMPOUND","ERC20","FIAT","SOL_ASSET","TRON_TRC20","XLM_ASSET","XDB_ASSET"]},"contractAddress":{"type":"string"},"nativeAsset":{"type":"string"},"decimals":{"type":"number"}},"required":["id","name","type"]}},"description":"List all asset types supported by Fireblocks.\n\nReturns all asset types supported by Fireblocks."},{"method":"get","path":"/estimate_network_fee","name":"estimate_network_fee_get","parameters":[{"type":"object","properties":{"query":{"type":"object","properties":{"assetId":{"type":"string","x-fb-entity":"asset","description":"The asset for which to estimate the fee"}},"required":["assetId"]}}}],"output":{"type":"object","properties":{"low":{"type":"object","properties":{"feePerByte":{"type":"string"},"gasPrice":{"type":"string"},"networkFee":{"type":"string"},"baseFee":{"description":"(optional) Base Fee according to EIP-1559 (ETH assets)","type":"string"},"priorityFee":{"description":"(optional) Priority Fee according to EIP-1559 (ETH assets)","type":"string"}}},"medium":{"type":"object","properties":{"feePerByte":{"type":"string"},"gasPrice":{"type":"string"},"networkFee":{"type":"string"},"baseFee":{"description":"(optional) Base Fee according to EIP-1559 (ETH assets)","type":"string"},"priorityFee":{"description":"(optional) Priority Fee according to EIP-1559 (ETH assets)","type":"string"}}},"high":{"type":"object","properties":{"feePerByte":{"type":"string"},"gasPrice":{"type":"string"},"networkFee":{"type":"string"},"baseFee":{"description":"(optional) Base Fee according to EIP-1559 (ETH assets)","type":"string"},"priorityFee":{"description":"(optional) Priority Fee according to EIP-1559 (ETH assets)","type":"string"}}}},"required":["low","medium","high"]},"description":"Estimate the required fee for an asset.\n\nGets the estimated required fee for an asset. For UTXO based assets, the response will contain the suggested fee per byte, for ETH/ETC based assets, the suggested gas price, and for XRP/XLM, the transaction fee."},{"method":"get","path":"/transactions/validate_address/{assetId}/{address}","name":"transactions_validate_address_getByAssetidAndAddress","parameters":[{"type":"object","properties":{"assetId":{"type":"string","x-fb-entity":"asset","description":"The asset of the address"},"address":{"type":"string","description":"The address to validate"}}}],"output":{"type":"object","properties":{"isValid":{"type":"boolean"},"isActive":{"type":"boolean"},"requiresTag":{"type":"boolean"}}},"description":"Validate destination address.\n\nChecks if an address is valid (for XRP, DOT, XLM, and EOS)."},{"method":"get","path":"/transactions","name":"transactions_get","parameters":[{"type":"object","properties":{"query":{"type":"object","properties":{"before":{"type":"string","description":"Unix timestamp in milliseconds. Returns only transactions created before the specified date"},"after":{"type":"string","description":"Unix timestamp in milliseconds. Returns only transactions created after the specified date"},"status":{"type":"string","description":"You can filter by one of the statuses."},"limit":{"type":"integer","minimum":1,"default":200,"description":"Limits the number of results. If not provided, a limit of 200 will be used. The maximum allowed limit is 500"},"sourceId":{"type":"string","description":"The source ID of the transaction"},"destId":{"type":"string","description":"The destination ID of the transaction"},"assets":{"type":"string","description":"A list of assets to filter by, seperated by commas"},"txHash":{"type":"string","description":"Returns only results with a specified txHash"},"sourceWalletId":{"type":"string","description":"Returns only results where the source is a specific end user wallet"},"destWalletId":{"type":"string","description":"Returns only results where the destination is a specific end user wallet"}},"required":[]}}}],"output":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"ID of the transaction."},"externalTxId":{"type":"string","description":"Unique transaction ID provided by the user. Fireblocks highly recommends setting an `externalTxId` for every transaction created, to avoid submitting the same transaction twice."},"status":{"type":"string","description":"The primary status of the transaction. For details, see [Primary transaction statuses](https://developers.fireblocks.com/reference/primary-transaction-statuses)."},"subStatus":{"type":"string","description":"See [Transaction substatuses](https://developers.fireblocks.com/reference/transaction-substatuses) for the list of transaction sub statuses."},"txHash":{"type":"string","description":"The hash of the transaction on the blockchain.\n * This parameter exists if at least one of the following conditions is met:\n\n 1. The transaction’s source type is `UNKNOWN`, `WHITELISTED_ADDRESS`, `NETWORK_CONNECTION`, `ONE_TIME_ADDRESS`, `FIAT_ACCOUNT` or `GAS_STATION`.\n\n 2. The transaction’s source type is `VAULT` and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these statuses prior to changing to `FAILED` or `REJECTED`. In some instances, transactions in status `BROADCASTING` will include the txHash as well.\n\n 3. The transaction’s source type is `EXCHANGE_ACCOUNT` and the transaction’s destination type is `VAULT`, and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these status prior to changing to `FAILED`.\n \n\n* In addition, the following conditions must be met:\n\n 1. The asset is a crypto asset (not fiat).\n\n 2. The transaction operation is not RAW or `TYPED_MESSAGE`."},"operation":{"type":"string","enum":["TRANSFER","BURN","CONTRACT_CALL","MINT","RAW","TYPED_MESSAGE","ENABLE_ASSET","STAKE","UNSTAKE","WITHDRAW","REDEEM_FROM_COMPOUND","SUPPLY_TO_COMPOUND"],"description":"* `TRANSFER` - Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n* `ENABLE_ASSET` - Algorand, DigitalBits, Solana, and Stellar require an on-chain transaction to create an asset wallet and enable the deposit address. This transaction is automatically created when adding assets on these blockchains at a vault account.\n* `STAKE` - Assign assets to a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `UNSTAKE` - Remove assets from a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `WITHDRAW` - Transfer assets from a dedicated staking vault account to another address. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n\n **Note:** Fireblocks will rename this type from `WITHDRAW` to a different type name soon. There will be a 7-day notice regarding the new type name.\n\n* `SUPPLY_TO_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n* `REDEEM_FROM_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n"},"note":{"type":"string","description":"Custom note, not sent to the blockchain, that describes the transaction at your Fireblocks workspace."},"assetId":{"type":"string","description":"The ID of the asset to transfer, for `TRANSFER`, `MINT`, `BURN`, `ENABLE_ASSET`,`STAKE` ,`UNSTAKE` or `WITHDRAW` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)","x-fb-entity":"asset"},"source":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"sourceAddress":{"type":"string","description":"For account based assets only, the source address of the transaction.\n**Note:** If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the source address. In any other case, this parameter will be empty."},"tag":{"type":"string","description":"Source address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)."},"destination":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"destinations":{"type":"array","description":"The transaction’s destinations.\n**Note:** In case the transaction is sent to a single destination, the `destination` parameter is used instead of this.","items":{"type":"object","properties":{"destination":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"destinationAddress":{"description":"Address where the asset was transferred."},"destinationAddressDescription":{"description":"Description of the address."},"amount":{"type":"string","description":"The amount to be sent to this destination."},"amountUSD":{"type":"string","description":"The USD value of the requested amount."},"amlScreeningResult":{"type":"object","description":"The result of the AML screening.","properties":{"provider":{"type":"string"},"payload":{"type":"object"}}},"customerRefId":{"description":"The ID for AML providers to associate the owner of funds with transactions."},"authorizationInfo":{"type":"object","description":"The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)","properties":{"allowOperatorAsAuthorizer":{"type":"boolean"},"logic":{"type":"string","enum":["AND","OR"]},"groups":{"type":"array","items":{"type":"object","properties":{"th":{"type":"number"},"users":{"type":"object","additionalProperties":{"type":"string","enum":["PENDING_AUTHORIZATION","APPROVED","REJECTED","NA"]}}}}}}}}}},"destinationAddress":{"type":"string","description":"Address where the asset were transferred.\nNotes:\n - For [Multi destination transactions](https://support.fireblocks.io/hc/en-us/articles/360018447980-Multi-destination-transactions), this parameter will be empty. In this case, you should refer to the destinations field.\n - If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the destination address. In any other case, this parameter will be empty."},"destinationAddressDescription":{"type":"string","description":"Description of the address."},"destinationTag":{"type":"string","description":"Destination address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)."},"contractCallDecodedData":{"description":"Decoded data for `CONTRACT_CALL` operations. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for setting this parameter's value.","type":"object","properties":{"contractName":{"type":"string"},"functionCalls":{"type":"array","items":{"type":"object"}}}},"amountInfo":{"type":"object","description":"The details of the requested amount to transfer.","properties":{"amount":{"description":"If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount.","type":"string"},"requestedAmount":{"description":"The amount requested by the user.","type":"string"},"netAmount":{"description":"The net amount of the transaction, after fee deduction.","type":"string"},"amountUSD":{"description":"The USD value of the requested amount.","type":"string"}}},"treatAsGrossAmount":{"type":"boolean","description":"For transactions initiated via this Fireblocks workspace, when set to `true`, the fee is deducted from the requested amount.\n\n**Note**: This parameter can only be considered if a transaction's asset is a base asset, such as ETH or MATIC. If the asset can't be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account."},"feeInfo":{"type":"object","description":"Details of the transaction's fee.","properties":{"networkFee":{"description":"The fee paid to the network","type":"string"},"serviceFee":{"description":"The total fee deducted by the exchange from the actual requested amount (serviceFee = amount - netAmount)","type":"string"},"gasPrice":{"type":"string"}}},"feeCurrency":{"type":"string","description":"The asset which was withdrawn to pay the transaction fee, for example ETH for EVM-based blockchains, BTC for Tether Omni."},"networkRecords":{"type":"array","description":"In case a single transaction resulted with multiple transfers, for example a result of a contract call, then this parameter specifies each transfer that took place on the blockchain. In case of a single transfer transaction, this parameter is empty.","items":{"type":"object","properties":{"source":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"destination":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"txHash":{"type":"string"},"networkFee":{"type":"string"},"assetId":{"type":"string","x-fb-entity":"asset"},"netAmount":{"description":"The net amount of the transaction, after fee deduction","type":"string"},"isDropped":{"type":"boolean"},"type":{"type":"string"},"destinationAddress":{"type":"string"},"sourceAddress":{"type":"string"},"amountUSD":{"type":"string"},"index":{"type":"number"},"rewardInfo":{"type":"object","description":"This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.","properties":{"srcRewards":{"type":"string"},"destRewards":{"type":"string"}}}}}},"createdAt":{"type":"number","description":"The transaction’s creation date and time, in unix timestamp."},"lastUpdated":{"type":"number","description":"The transaction’s last update date and time, in unix timestamp."},"createdBy":{"type":"string","description":"User ID of the initiator of the transaction."},"signedBy":{"type":"array","description":"User ID’s of the signers of the transaction.","items":{"type":"string"}},"rejectedBy":{"type":"string","description":"User ID of the user that rejected the transaction (in case it was rejected)."},"authorizationInfo":{"type":"object","description":"The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)","properties":{"allowOperatorAsAuthorizer":{"type":"boolean"},"logic":{"type":"string","enum":["AND","OR"]},"groups":{"type":"array","items":{"type":"object","properties":{"th":{"type":"number"},"users":{"type":"object","additionalProperties":{"type":"string","enum":["PENDING_AUTHORIZATION","APPROVED","REJECTED","NA"]}}}}}}},"exchangeTxId":{"type":"string","description":"If the transaction originated from an exchange, this is the ID of this transaction at the exchange."},"customerRefId":{"type":"string","description":"The ID for AML providers to associate the owner of funds with transactions."},"amlScreeningResult":{"type":"object","description":"The result of the AML screening.","properties":{"provider":{"type":"string"},"payload":{"type":"object"}}},"extraParameters":{"type":"object","properties":{},"description":"Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n"},"signedMessages":{"type":"object","description":"A list of signed messages returned for raw signing.","properties":{"content":{"type":"string"},"algorithm":{"type":"string","enum":["MPC_ECDSA_SECP256K1","MPC_EDDSA_ED25519"]},"derivationPath":{"type":"array","items":{"type":"number"}},"signature":{"type":"object","properties":{"fullSig":{"type":"string"},"r":{"type":"string"},"s":{"type":"string"},"v":{"type":"number"}}},"publicKey":{"type":"string"}}},"numOfConfirmations":{"type":"number","description":"The number of confirmations of the transaction. The number will increase until the transaction will be considered completed according to the confirmation policy."},"blockInfo":{"type":"object","description":"The block hash and height of the block that this transaction was mined in.\n **Note**: If an outgoing transaction uses the destinations object with more than one value in the array, blockHash is set to null.","properties":{"blockHeight":{"type":"string"},"blockHash":{"type":"string"}}},"index":{"type":"number","description":"For UTXO based assets this is the vOut, for Ethereum based, this is the index of the event of the contract call.\n **Note:** This field is not returned if a transaction uses the `destinations` object with more than one value."},"rewardInfo":{"type":"object","description":"This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.","properties":{"srcRewards":{"type":"string"},"destRewards":{"type":"string"}}},"systemMessages":{"type":"object","properties":{"type":{"type":"string","enum":["WARN","BLOCK"]},"message":{"type":"string","description":"A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.","example":"Slow transaction processing. Outgoing transactions might be stuck."}}},"addressType":{"type":"string","enum":["WHITELISTED","ONE_TIME"]},"requestedAmount":{"description":"The amount requested by the user. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","deprecated":true},"amount":{"description":"If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","deprecated":true},"netAmount":{"description":"The net amount of the transaction, after fee deduction. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","deprecated":true},"amountUSD":{"description":"The USD value of the requested amount. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","nullable":true,"deprecated":true},"serviceFee":{"description":"The total fee deducted by the exchange from the actual requested amount (`serviceFee` = `amount` - `netAmount`). Deprecated - please use the `feeInfo` field for accuracy.","type":"number","deprecated":true},"fee":{"description":"Deprecated - please use the `feeInfo` field for accuracy.","type":"number","deprecated":true},"networkFee":{"description":"The fee paid to the network. Deprecated - please use the `feeInfo` field for accuracy.","type":"number","deprecated":true}}}},"description":"List transaction history.\n\nLists the transaction history for your workspace."},{"method":"post","path":"/transactions","name":"transactions_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"operation":{"type":"string","enum":["TRANSFER","BURN","CONTRACT_CALL","MINT","RAW","TYPED_MESSAGE"],"description":"* `TRANSFER` - The default value for an operation. Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n"},"note":{"type":"string","description":"Custom note, not sent to the blockchain, to describe the transaction at your Fireblocks workspace.","example":"Ticket 123"},"externalTxId":{"type":"string","description":"An optional but highly recommended parameter. Fireblocks will reject future transactions with same ID. \n \nYou should set this to a unique ID representing the transaction, to avoid submitting the same transaction twice. This helps with cases where submitting the transaction responds with an error code due to Internet interruptions, but the transaction was actually sent and processed. To validate whether a transaction has been processed, [Find a specific transaction by external transaction ID](https://developers.fireblocks.com/reference/get_transactions-external-tx-id-externaltxid).\n \nThere is no specific format required for this parameter.","example":"00000000-0000-0000-0000-000000000000"},"assetId":{"type":"string","description":"The ID of the asset to transfer, for `TRANSFER`, `MINT` or `BURN` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)","x-fb-entity":"asset","example":"ETH"},"source":{"type":"object","properties":{"type":{"type":"string","enum":["VAULT_ACCOUNT","EXCHANGE_ACCOUNT","INTERNAL_WALLET","EXTERNAL_WALLET","NETWORK_CONNECTION","FIAT_ACCOUNT","COMPOUND","GAS_STATION","ONE_TIME_ADDRESS","UNKNOWN","END_USER_WALLET"]},"subType":{"type":"string","enum":["BINANCE","BINANCEUS","BITFINEX","BITHUMB","BITMEX","BITSO","BITSTAMP","BITTREX","BLINC","BYBIT","CIRCLE","COINBASEEXCHANGE","COINBASEPRO","COINMETRO","COINSPRO","CRYPTOCOM","DERIBIT","GEMINI","HITBTC","HUOBI","INDEPENDENTRESERVE","KORBIT","KRAKEN","KRAKENINTL","KUCOIN","LIQUID","OKCOIN","OKEX","PAXOS","POLONIEX","External","Internal"]},"id":{"type":"string"},"name":{"type":"string"},"walletId":{"type":"string","format":"uuid"}},"required":["type"]},"destination":{},"destinations":{"type":"array","description":"For UTXO based blockchains, you can send a single transaction to multiple destinations.","items":{"type":"object","properties":{"amount":{"type":"string"},"destination":{}}}},"amount":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"0.02"},{"type":"number","description":"Number (deprecated)","example":0.02}],"description":"For `TRANSFER` operations, the requested amount to transfer, in the asset’s unit. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"treatAsGrossAmount":{"type":"boolean","description":"\"When set to `true`, the fee will be deducted from the requested amount.\"\n\n**Note**: This parameter can only be considered if a transaction’s asset is a base asset, such as ETH or MATIC. If the asset can’t be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account."},"forceSweep":{"type":"boolean","description":"For Polkadot, Kusama and Westend transactions only. When set to true, Fireblocks will empty the asset wallet.\n\n **Note:** If set to true when the source account is exactly 1 DOT, the transaction will fail. Any amount more or less than 1 DOT succeeds. This is a Polkadot blockchain limitation."},"feeLevel":{"type":"string","enum":["LOW","MEDIUM","HIGH"],"description":"For UTXO or EVM-based blockchains only. Defines the blockchain fee level which will be payed for the transaction. Alternatively, specific fee estimation parameters exist below."},"fee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For UTXO-based blockchains, the fee per bytes in the asset’s smallest unit (Satoshi, Latoshi, etc.). For Ripple, the fee for the transaction. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"priorityFee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"2"},{"type":"number","description":"Number (deprecated)","example":2}],"description":"For Ethereum-based blockchains only, the fee for EIP-1559 transaction pricing mechanism. Value is in Gwei. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"failOnLowFee":{"type":"boolean","description":"When set to `true`, in case the current `MEDIUM` fee level is higher than the one specified in the transaction, the transaction will fail to avoid getting stuck with no confirmations."},"maxFee":{"description":"The maximum fee (gas price or fee per byte) that should be payed for the transaction. In case the current value of the requested `feeLevel` is higher than this requested maximum fee. Represented by a numeric string for accurate precision.","type":"string","example":"120"},"gasLimit":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"21000"},{"type":"number","description":"Number (deprecated)","example":21000}],"description":"For EVM-based blockchains only. Units of gas required to process the transaction. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"gasPrice":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For non-EIP-1559, EVM-based transactions. Price per gas unit (in Ethereum this is specified in Gwei). Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"networkFee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For EVM-based blockchains only. The total transaction fee in the blockchain’s largest unit. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated. - The transaction blockchain fee.\n- For Ethereum, you can't pass gasPrice, gasLimit and networkFee all together.\n- A numeric value representation is required."},"replaceTxByHash":{"type":"string","description":"For EVM-based blockchains only. In case a transaction is stuck, specify the hash of the stuck transaction to replace it by this transaction with a higher fee, or to replace it with this transaction with a zero fee and drop it from the blockchain.","example":"00000000-0000-0000-0000-000000000000"},"extraParameters":{"type":"object","properties":{},"description":"Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n"},"customerRefId":{"type":"string","description":"The ID for AML providers to associate the owner of funds with transactions.","example":"abcdef"},"autoStaking":{"type":"boolean","description":"This feature is no longer supported."},"networkStaking":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"This feature is no longer supported."},"cpuStaking":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"This feature is no longer supported."}}}}}],"output":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the transaction."},"status":{"type":"string","description":"The primary status of the transaction. For details, see [Primary transaction statuses.] (https://developers.fireblocks.com/reference/primary-transaction-statuses)"},"systemMessages":{"type":"object","properties":{"type":{"type":"string","enum":["WARN","BLOCK"]},"message":{"type":"string","description":"A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.","example":"Slow transaction processing. Outgoing transactions might be stuck."}}}}},"description":"Create a new transaction.\n\nCreates a new transaction."},{"method":"post","path":"/transactions/estimate_fee","name":"transactions_estimate_fee_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"operation":{"type":"string","enum":["TRANSFER","BURN","CONTRACT_CALL","MINT","RAW","TYPED_MESSAGE"],"description":"* `TRANSFER` - The default value for an operation. Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n"},"note":{"type":"string","description":"Custom note, not sent to the blockchain, to describe the transaction at your Fireblocks workspace.","example":"Ticket 123"},"externalTxId":{"type":"string","description":"An optional but highly recommended parameter. Fireblocks will reject future transactions with same ID. \n \nYou should set this to a unique ID representing the transaction, to avoid submitting the same transaction twice. This helps with cases where submitting the transaction responds with an error code due to Internet interruptions, but the transaction was actually sent and processed. To validate whether a transaction has been processed, [Find a specific transaction by external transaction ID](https://developers.fireblocks.com/reference/get_transactions-external-tx-id-externaltxid).\n \nThere is no specific format required for this parameter.","example":"00000000-0000-0000-0000-000000000000"},"assetId":{"type":"string","description":"The ID of the asset to transfer, for `TRANSFER`, `MINT` or `BURN` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)","x-fb-entity":"asset","example":"ETH"},"source":{"type":"object","properties":{"type":{"type":"string","enum":["VAULT_ACCOUNT","EXCHANGE_ACCOUNT","INTERNAL_WALLET","EXTERNAL_WALLET","NETWORK_CONNECTION","FIAT_ACCOUNT","COMPOUND","GAS_STATION","ONE_TIME_ADDRESS","UNKNOWN","END_USER_WALLET"]},"subType":{"type":"string","enum":["BINANCE","BINANCEUS","BITFINEX","BITHUMB","BITMEX","BITSO","BITSTAMP","BITTREX","BLINC","BYBIT","CIRCLE","COINBASEEXCHANGE","COINBASEPRO","COINMETRO","COINSPRO","CRYPTOCOM","DERIBIT","GEMINI","HITBTC","HUOBI","INDEPENDENTRESERVE","KORBIT","KRAKEN","KRAKENINTL","KUCOIN","LIQUID","OKCOIN","OKEX","PAXOS","POLONIEX","External","Internal"]},"id":{"type":"string"},"name":{"type":"string"},"walletId":{"type":"string","format":"uuid"}},"required":["type"]},"destination":{},"destinations":{"type":"array","description":"For UTXO based blockchains, you can send a single transaction to multiple destinations.","items":{"type":"object","properties":{"amount":{"type":"string"},"destination":{}}}},"amount":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"0.02"},{"type":"number","description":"Number (deprecated)","example":0.02}],"description":"For `TRANSFER` operations, the requested amount to transfer, in the asset’s unit. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"treatAsGrossAmount":{"type":"boolean","description":"\"When set to `true`, the fee will be deducted from the requested amount.\"\n\n**Note**: This parameter can only be considered if a transaction’s asset is a base asset, such as ETH or MATIC. If the asset can’t be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account."},"forceSweep":{"type":"boolean","description":"For Polkadot, Kusama and Westend transactions only. When set to true, Fireblocks will empty the asset wallet.\n\n **Note:** If set to true when the source account is exactly 1 DOT, the transaction will fail. Any amount more or less than 1 DOT succeeds. This is a Polkadot blockchain limitation."},"feeLevel":{"type":"string","enum":["LOW","MEDIUM","HIGH"],"description":"For UTXO or EVM-based blockchains only. Defines the blockchain fee level which will be payed for the transaction. Alternatively, specific fee estimation parameters exist below."},"fee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For UTXO-based blockchains, the fee per bytes in the asset’s smallest unit (Satoshi, Latoshi, etc.). For Ripple, the fee for the transaction. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"priorityFee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"2"},{"type":"number","description":"Number (deprecated)","example":2}],"description":"For Ethereum-based blockchains only, the fee for EIP-1559 transaction pricing mechanism. Value is in Gwei. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"failOnLowFee":{"type":"boolean","description":"When set to `true`, in case the current `MEDIUM` fee level is higher than the one specified in the transaction, the transaction will fail to avoid getting stuck with no confirmations."},"maxFee":{"description":"The maximum fee (gas price or fee per byte) that should be payed for the transaction. In case the current value of the requested `feeLevel` is higher than this requested maximum fee. Represented by a numeric string for accurate precision.","type":"string","example":"120"},"gasLimit":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"21000"},{"type":"number","description":"Number (deprecated)","example":21000}],"description":"For EVM-based blockchains only. Units of gas required to process the transaction. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"gasPrice":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For non-EIP-1559, EVM-based transactions. Price per gas unit (in Ethereum this is specified in Gwei). Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"networkFee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For EVM-based blockchains only. The total transaction fee in the blockchain’s largest unit. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated. - The transaction blockchain fee.\n- For Ethereum, you can't pass gasPrice, gasLimit and networkFee all together.\n- A numeric value representation is required."},"replaceTxByHash":{"type":"string","description":"For EVM-based blockchains only. In case a transaction is stuck, specify the hash of the stuck transaction to replace it by this transaction with a higher fee, or to replace it with this transaction with a zero fee and drop it from the blockchain.","example":"00000000-0000-0000-0000-000000000000"},"extraParameters":{"type":"object","properties":{},"description":"Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n"},"customerRefId":{"type":"string","description":"The ID for AML providers to associate the owner of funds with transactions.","example":"abcdef"},"autoStaking":{"type":"boolean","description":"This feature is no longer supported."},"networkStaking":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"This feature is no longer supported."},"cpuStaking":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"This feature is no longer supported."}}}}}],"output":{"type":"object","properties":{"low":{"type":"object","properties":{"feePerByte":{"type":"string"},"gasPrice":{"type":"string"},"gasLimit":{"type":"string"},"networkFee":{"type":"string"},"baseFee":{"description":"(optional) Base Fee according to EIP-1559 (ETH assets)","type":"string"},"priorityFee":{"description":"(optional) Priority Fee according to EIP-1559 (ETH assets)","type":"string"}}},"medium":{"type":"object","properties":{"feePerByte":{"type":"string"},"gasPrice":{"type":"string"},"gasLimit":{"type":"string"},"networkFee":{"type":"string"},"baseFee":{"description":"(optional) Base Fee according to EIP-1559 (ETH assets)","type":"string"},"priorityFee":{"description":"(optional) Priority Fee according to EIP-1559 (ETH assets)","type":"string"}}},"high":{"type":"object","properties":{"feePerByte":{"type":"string"},"gasPrice":{"type":"string"},"gasLimit":{"type":"string"},"networkFee":{"type":"string"},"baseFee":{"description":"(optional) Base Fee according to EIP-1559 (ETH assets)","type":"string"},"priorityFee":{"description":"(optional) Priority Fee according to EIP-1559 (ETH assets)","type":"string"}}}},"required":["low","medium","high"]},"description":"Estimate transaction fee.\n\nEstimates the transaction fee for a transaction request.\n* Note: Supports all Fireblocks assets except ZCash (ZEC)."},{"method":"get","path":"/transactions/{txId}","name":"transactions_getByTxid","parameters":[{"type":"object","properties":{"txId":{"type":"string","minimum":1,"description":"The ID of the transaction to return"}}}],"output":{"type":"object","properties":{"id":{"type":"string","description":"ID of the transaction."},"externalTxId":{"type":"string","description":"Unique transaction ID provided by the user. Fireblocks highly recommends setting an `externalTxId` for every transaction created, to avoid submitting the same transaction twice."},"status":{"type":"string","description":"The primary status of the transaction. For details, see [Primary transaction statuses](https://developers.fireblocks.com/reference/primary-transaction-statuses)."},"subStatus":{"type":"string","description":"See [Transaction substatuses](https://developers.fireblocks.com/reference/transaction-substatuses) for the list of transaction sub statuses."},"txHash":{"type":"string","description":"The hash of the transaction on the blockchain.\n * This parameter exists if at least one of the following conditions is met:\n\n 1. The transaction’s source type is `UNKNOWN`, `WHITELISTED_ADDRESS`, `NETWORK_CONNECTION`, `ONE_TIME_ADDRESS`, `FIAT_ACCOUNT` or `GAS_STATION`.\n\n 2. The transaction’s source type is `VAULT` and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these statuses prior to changing to `FAILED` or `REJECTED`. In some instances, transactions in status `BROADCASTING` will include the txHash as well.\n\n 3. The transaction’s source type is `EXCHANGE_ACCOUNT` and the transaction’s destination type is `VAULT`, and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these status prior to changing to `FAILED`.\n \n\n* In addition, the following conditions must be met:\n\n 1. The asset is a crypto asset (not fiat).\n\n 2. The transaction operation is not RAW or `TYPED_MESSAGE`."},"operation":{"type":"string","enum":["TRANSFER","BURN","CONTRACT_CALL","MINT","RAW","TYPED_MESSAGE","ENABLE_ASSET","STAKE","UNSTAKE","WITHDRAW","REDEEM_FROM_COMPOUND","SUPPLY_TO_COMPOUND"],"description":"* `TRANSFER` - Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n* `ENABLE_ASSET` - Algorand, DigitalBits, Solana, and Stellar require an on-chain transaction to create an asset wallet and enable the deposit address. This transaction is automatically created when adding assets on these blockchains at a vault account.\n* `STAKE` - Assign assets to a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `UNSTAKE` - Remove assets from a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `WITHDRAW` - Transfer assets from a dedicated staking vault account to another address. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n\n **Note:** Fireblocks will rename this type from `WITHDRAW` to a different type name soon. There will be a 7-day notice regarding the new type name.\n\n* `SUPPLY_TO_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n* `REDEEM_FROM_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n"},"note":{"type":"string","description":"Custom note, not sent to the blockchain, that describes the transaction at your Fireblocks workspace."},"assetId":{"type":"string","description":"The ID of the asset to transfer, for `TRANSFER`, `MINT`, `BURN`, `ENABLE_ASSET`,`STAKE` ,`UNSTAKE` or `WITHDRAW` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)","x-fb-entity":"asset"},"source":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"sourceAddress":{"type":"string","description":"For account based assets only, the source address of the transaction.\n**Note:** If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the source address. In any other case, this parameter will be empty."},"tag":{"type":"string","description":"Source address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)."},"destination":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"destinations":{"type":"array","description":"The transaction’s destinations.\n**Note:** In case the transaction is sent to a single destination, the `destination` parameter is used instead of this.","items":{"type":"object","properties":{"destination":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"destinationAddress":{"description":"Address where the asset was transferred."},"destinationAddressDescription":{"description":"Description of the address."},"amount":{"type":"string","description":"The amount to be sent to this destination."},"amountUSD":{"type":"string","description":"The USD value of the requested amount."},"amlScreeningResult":{"type":"object","description":"The result of the AML screening.","properties":{"provider":{"type":"string"},"payload":{"type":"object"}}},"customerRefId":{"description":"The ID for AML providers to associate the owner of funds with transactions."},"authorizationInfo":{"type":"object","description":"The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)","properties":{"allowOperatorAsAuthorizer":{"type":"boolean"},"logic":{"type":"string","enum":["AND","OR"]},"groups":{"type":"array","items":{"type":"object","properties":{"th":{"type":"number"},"users":{"type":"object","additionalProperties":{"type":"string","enum":["PENDING_AUTHORIZATION","APPROVED","REJECTED","NA"]}}}}}}}}}},"destinationAddress":{"type":"string","description":"Address where the asset were transferred.\nNotes:\n - For [Multi destination transactions](https://support.fireblocks.io/hc/en-us/articles/360018447980-Multi-destination-transactions), this parameter will be empty. In this case, you should refer to the destinations field.\n - If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the destination address. In any other case, this parameter will be empty."},"destinationAddressDescription":{"type":"string","description":"Description of the address."},"destinationTag":{"type":"string","description":"Destination address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)."},"contractCallDecodedData":{"description":"Decoded data for `CONTRACT_CALL` operations. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for setting this parameter's value.","type":"object","properties":{"contractName":{"type":"string"},"functionCalls":{"type":"array","items":{"type":"object"}}}},"amountInfo":{"type":"object","description":"The details of the requested amount to transfer.","properties":{"amount":{"description":"If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount.","type":"string"},"requestedAmount":{"description":"The amount requested by the user.","type":"string"},"netAmount":{"description":"The net amount of the transaction, after fee deduction.","type":"string"},"amountUSD":{"description":"The USD value of the requested amount.","type":"string"}}},"treatAsGrossAmount":{"type":"boolean","description":"For transactions initiated via this Fireblocks workspace, when set to `true`, the fee is deducted from the requested amount.\n\n**Note**: This parameter can only be considered if a transaction's asset is a base asset, such as ETH or MATIC. If the asset can't be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account."},"feeInfo":{"type":"object","description":"Details of the transaction's fee.","properties":{"networkFee":{"description":"The fee paid to the network","type":"string"},"serviceFee":{"description":"The total fee deducted by the exchange from the actual requested amount (serviceFee = amount - netAmount)","type":"string"},"gasPrice":{"type":"string"}}},"feeCurrency":{"type":"string","description":"The asset which was withdrawn to pay the transaction fee, for example ETH for EVM-based blockchains, BTC for Tether Omni."},"networkRecords":{"type":"array","description":"In case a single transaction resulted with multiple transfers, for example a result of a contract call, then this parameter specifies each transfer that took place on the blockchain. In case of a single transfer transaction, this parameter is empty.","items":{"type":"object","properties":{"source":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"destination":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"txHash":{"type":"string"},"networkFee":{"type":"string"},"assetId":{"type":"string","x-fb-entity":"asset"},"netAmount":{"description":"The net amount of the transaction, after fee deduction","type":"string"},"isDropped":{"type":"boolean"},"type":{"type":"string"},"destinationAddress":{"type":"string"},"sourceAddress":{"type":"string"},"amountUSD":{"type":"string"},"index":{"type":"number"},"rewardInfo":{"type":"object","description":"This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.","properties":{"srcRewards":{"type":"string"},"destRewards":{"type":"string"}}}}}},"createdAt":{"type":"number","description":"The transaction’s creation date and time, in unix timestamp."},"lastUpdated":{"type":"number","description":"The transaction’s last update date and time, in unix timestamp."},"createdBy":{"type":"string","description":"User ID of the initiator of the transaction."},"signedBy":{"type":"array","description":"User ID’s of the signers of the transaction.","items":{"type":"string"}},"rejectedBy":{"type":"string","description":"User ID of the user that rejected the transaction (in case it was rejected)."},"authorizationInfo":{"type":"object","description":"The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)","properties":{"allowOperatorAsAuthorizer":{"type":"boolean"},"logic":{"type":"string","enum":["AND","OR"]},"groups":{"type":"array","items":{"type":"object","properties":{"th":{"type":"number"},"users":{"type":"object","additionalProperties":{"type":"string","enum":["PENDING_AUTHORIZATION","APPROVED","REJECTED","NA"]}}}}}}},"exchangeTxId":{"type":"string","description":"If the transaction originated from an exchange, this is the ID of this transaction at the exchange."},"customerRefId":{"type":"string","description":"The ID for AML providers to associate the owner of funds with transactions."},"amlScreeningResult":{"type":"object","description":"The result of the AML screening.","properties":{"provider":{"type":"string"},"payload":{"type":"object"}}},"extraParameters":{"type":"object","properties":{},"description":"Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n"},"signedMessages":{"type":"object","description":"A list of signed messages returned for raw signing.","properties":{"content":{"type":"string"},"algorithm":{"type":"string","enum":["MPC_ECDSA_SECP256K1","MPC_EDDSA_ED25519"]},"derivationPath":{"type":"array","items":{"type":"number"}},"signature":{"type":"object","properties":{"fullSig":{"type":"string"},"r":{"type":"string"},"s":{"type":"string"},"v":{"type":"number"}}},"publicKey":{"type":"string"}}},"numOfConfirmations":{"type":"number","description":"The number of confirmations of the transaction. The number will increase until the transaction will be considered completed according to the confirmation policy."},"blockInfo":{"type":"object","description":"The block hash and height of the block that this transaction was mined in.\n **Note**: If an outgoing transaction uses the destinations object with more than one value in the array, blockHash is set to null.","properties":{"blockHeight":{"type":"string"},"blockHash":{"type":"string"}}},"index":{"type":"number","description":"For UTXO based assets this is the vOut, for Ethereum based, this is the index of the event of the contract call.\n **Note:** This field is not returned if a transaction uses the `destinations` object with more than one value."},"rewardInfo":{"type":"object","description":"This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.","properties":{"srcRewards":{"type":"string"},"destRewards":{"type":"string"}}},"systemMessages":{"type":"object","properties":{"type":{"type":"string","enum":["WARN","BLOCK"]},"message":{"type":"string","description":"A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.","example":"Slow transaction processing. Outgoing transactions might be stuck."}}},"addressType":{"type":"string","enum":["WHITELISTED","ONE_TIME"]},"requestedAmount":{"description":"The amount requested by the user. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","deprecated":true},"amount":{"description":"If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","deprecated":true},"netAmount":{"description":"The net amount of the transaction, after fee deduction. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","deprecated":true},"amountUSD":{"description":"The USD value of the requested amount. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","nullable":true,"deprecated":true},"serviceFee":{"description":"The total fee deducted by the exchange from the actual requested amount (`serviceFee` = `amount` - `netAmount`). Deprecated - please use the `feeInfo` field for accuracy.","type":"number","deprecated":true},"fee":{"description":"Deprecated - please use the `feeInfo` field for accuracy.","type":"number","deprecated":true},"networkFee":{"description":"The fee paid to the network. Deprecated - please use the `feeInfo` field for accuracy.","type":"number","deprecated":true}}},"description":"Find a specific transaction by Fireblocks transaction ID.\n\nReturns a transaction by ID."},{"method":"get","path":"/transactions/external_tx_id/{externalTxId}/","name":"transactions_external_tx_id_getByExternaltxid","parameters":[{"type":"object","properties":{"externalTxId":{"type":"string","minimum":1,"description":"The external ID of the transaction to return"}}}],"output":{"type":"object","properties":{"id":{"type":"string","description":"ID of the transaction."},"externalTxId":{"type":"string","description":"Unique transaction ID provided by the user. Fireblocks highly recommends setting an `externalTxId` for every transaction created, to avoid submitting the same transaction twice."},"status":{"type":"string","description":"The primary status of the transaction. For details, see [Primary transaction statuses](https://developers.fireblocks.com/reference/primary-transaction-statuses)."},"subStatus":{"type":"string","description":"See [Transaction substatuses](https://developers.fireblocks.com/reference/transaction-substatuses) for the list of transaction sub statuses."},"txHash":{"type":"string","description":"The hash of the transaction on the blockchain.\n * This parameter exists if at least one of the following conditions is met:\n\n 1. The transaction’s source type is `UNKNOWN`, `WHITELISTED_ADDRESS`, `NETWORK_CONNECTION`, `ONE_TIME_ADDRESS`, `FIAT_ACCOUNT` or `GAS_STATION`.\n\n 2. The transaction’s source type is `VAULT` and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these statuses prior to changing to `FAILED` or `REJECTED`. In some instances, transactions in status `BROADCASTING` will include the txHash as well.\n\n 3. The transaction’s source type is `EXCHANGE_ACCOUNT` and the transaction’s destination type is `VAULT`, and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these status prior to changing to `FAILED`.\n \n\n* In addition, the following conditions must be met:\n\n 1. The asset is a crypto asset (not fiat).\n\n 2. The transaction operation is not RAW or `TYPED_MESSAGE`."},"operation":{"type":"string","enum":["TRANSFER","BURN","CONTRACT_CALL","MINT","RAW","TYPED_MESSAGE","ENABLE_ASSET","STAKE","UNSTAKE","WITHDRAW","REDEEM_FROM_COMPOUND","SUPPLY_TO_COMPOUND"],"description":"* `TRANSFER` - Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n* `ENABLE_ASSET` - Algorand, DigitalBits, Solana, and Stellar require an on-chain transaction to create an asset wallet and enable the deposit address. This transaction is automatically created when adding assets on these blockchains at a vault account.\n* `STAKE` - Assign assets to a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `UNSTAKE` - Remove assets from a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `WITHDRAW` - Transfer assets from a dedicated staking vault account to another address. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n\n **Note:** Fireblocks will rename this type from `WITHDRAW` to a different type name soon. There will be a 7-day notice regarding the new type name.\n\n* `SUPPLY_TO_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n* `REDEEM_FROM_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n"},"note":{"type":"string","description":"Custom note, not sent to the blockchain, that describes the transaction at your Fireblocks workspace."},"assetId":{"type":"string","description":"The ID of the asset to transfer, for `TRANSFER`, `MINT`, `BURN`, `ENABLE_ASSET`,`STAKE` ,`UNSTAKE` or `WITHDRAW` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)","x-fb-entity":"asset"},"source":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"sourceAddress":{"type":"string","description":"For account based assets only, the source address of the transaction.\n**Note:** If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the source address. In any other case, this parameter will be empty."},"tag":{"type":"string","description":"Source address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)."},"destination":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"destinations":{"type":"array","description":"The transaction’s destinations.\n**Note:** In case the transaction is sent to a single destination, the `destination` parameter is used instead of this.","items":{"type":"object","properties":{"destination":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"destinationAddress":{"description":"Address where the asset was transferred."},"destinationAddressDescription":{"description":"Description of the address."},"amount":{"type":"string","description":"The amount to be sent to this destination."},"amountUSD":{"type":"string","description":"The USD value of the requested amount."},"amlScreeningResult":{"type":"object","description":"The result of the AML screening.","properties":{"provider":{"type":"string"},"payload":{"type":"object"}}},"customerRefId":{"description":"The ID for AML providers to associate the owner of funds with transactions."},"authorizationInfo":{"type":"object","description":"The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)","properties":{"allowOperatorAsAuthorizer":{"type":"boolean"},"logic":{"type":"string","enum":["AND","OR"]},"groups":{"type":"array","items":{"type":"object","properties":{"th":{"type":"number"},"users":{"type":"object","additionalProperties":{"type":"string","enum":["PENDING_AUTHORIZATION","APPROVED","REJECTED","NA"]}}}}}}}}}},"destinationAddress":{"type":"string","description":"Address where the asset were transferred.\nNotes:\n - For [Multi destination transactions](https://support.fireblocks.io/hc/en-us/articles/360018447980-Multi-destination-transactions), this parameter will be empty. In this case, you should refer to the destinations field.\n - If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the destination address. In any other case, this parameter will be empty."},"destinationAddressDescription":{"type":"string","description":"Description of the address."},"destinationTag":{"type":"string","description":"Destination address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)."},"contractCallDecodedData":{"description":"Decoded data for `CONTRACT_CALL` operations. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for setting this parameter's value.","type":"object","properties":{"contractName":{"type":"string"},"functionCalls":{"type":"array","items":{"type":"object"}}}},"amountInfo":{"type":"object","description":"The details of the requested amount to transfer.","properties":{"amount":{"description":"If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount.","type":"string"},"requestedAmount":{"description":"The amount requested by the user.","type":"string"},"netAmount":{"description":"The net amount of the transaction, after fee deduction.","type":"string"},"amountUSD":{"description":"The USD value of the requested amount.","type":"string"}}},"treatAsGrossAmount":{"type":"boolean","description":"For transactions initiated via this Fireblocks workspace, when set to `true`, the fee is deducted from the requested amount.\n\n**Note**: This parameter can only be considered if a transaction's asset is a base asset, such as ETH or MATIC. If the asset can't be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account."},"feeInfo":{"type":"object","description":"Details of the transaction's fee.","properties":{"networkFee":{"description":"The fee paid to the network","type":"string"},"serviceFee":{"description":"The total fee deducted by the exchange from the actual requested amount (serviceFee = amount - netAmount)","type":"string"},"gasPrice":{"type":"string"}}},"feeCurrency":{"type":"string","description":"The asset which was withdrawn to pay the transaction fee, for example ETH for EVM-based blockchains, BTC for Tether Omni."},"networkRecords":{"type":"array","description":"In case a single transaction resulted with multiple transfers, for example a result of a contract call, then this parameter specifies each transfer that took place on the blockchain. In case of a single transfer transaction, this parameter is empty.","items":{"type":"object","properties":{"source":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"destination":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"txHash":{"type":"string"},"networkFee":{"type":"string"},"assetId":{"type":"string","x-fb-entity":"asset"},"netAmount":{"description":"The net amount of the transaction, after fee deduction","type":"string"},"isDropped":{"type":"boolean"},"type":{"type":"string"},"destinationAddress":{"type":"string"},"sourceAddress":{"type":"string"},"amountUSD":{"type":"string"},"index":{"type":"number"},"rewardInfo":{"type":"object","description":"This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.","properties":{"srcRewards":{"type":"string"},"destRewards":{"type":"string"}}}}}},"createdAt":{"type":"number","description":"The transaction’s creation date and time, in unix timestamp."},"lastUpdated":{"type":"number","description":"The transaction’s last update date and time, in unix timestamp."},"createdBy":{"type":"string","description":"User ID of the initiator of the transaction."},"signedBy":{"type":"array","description":"User ID’s of the signers of the transaction.","items":{"type":"string"}},"rejectedBy":{"type":"string","description":"User ID of the user that rejected the transaction (in case it was rejected)."},"authorizationInfo":{"type":"object","description":"The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)","properties":{"allowOperatorAsAuthorizer":{"type":"boolean"},"logic":{"type":"string","enum":["AND","OR"]},"groups":{"type":"array","items":{"type":"object","properties":{"th":{"type":"number"},"users":{"type":"object","additionalProperties":{"type":"string","enum":["PENDING_AUTHORIZATION","APPROVED","REJECTED","NA"]}}}}}}},"exchangeTxId":{"type":"string","description":"If the transaction originated from an exchange, this is the ID of this transaction at the exchange."},"customerRefId":{"type":"string","description":"The ID for AML providers to associate the owner of funds with transactions."},"amlScreeningResult":{"type":"object","description":"The result of the AML screening.","properties":{"provider":{"type":"string"},"payload":{"type":"object"}}},"extraParameters":{"type":"object","properties":{},"description":"Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n"},"signedMessages":{"type":"object","description":"A list of signed messages returned for raw signing.","properties":{"content":{"type":"string"},"algorithm":{"type":"string","enum":["MPC_ECDSA_SECP256K1","MPC_EDDSA_ED25519"]},"derivationPath":{"type":"array","items":{"type":"number"}},"signature":{"type":"object","properties":{"fullSig":{"type":"string"},"r":{"type":"string"},"s":{"type":"string"},"v":{"type":"number"}}},"publicKey":{"type":"string"}}},"numOfConfirmations":{"type":"number","description":"The number of confirmations of the transaction. The number will increase until the transaction will be considered completed according to the confirmation policy."},"blockInfo":{"type":"object","description":"The block hash and height of the block that this transaction was mined in.\n **Note**: If an outgoing transaction uses the destinations object with more than one value in the array, blockHash is set to null.","properties":{"blockHeight":{"type":"string"},"blockHash":{"type":"string"}}},"index":{"type":"number","description":"For UTXO based assets this is the vOut, for Ethereum based, this is the index of the event of the contract call.\n **Note:** This field is not returned if a transaction uses the `destinations` object with more than one value."},"rewardInfo":{"type":"object","description":"This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.","properties":{"srcRewards":{"type":"string"},"destRewards":{"type":"string"}}},"systemMessages":{"type":"object","properties":{"type":{"type":"string","enum":["WARN","BLOCK"]},"message":{"type":"string","description":"A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.","example":"Slow transaction processing. Outgoing transactions might be stuck."}}},"addressType":{"type":"string","enum":["WHITELISTED","ONE_TIME"]},"requestedAmount":{"description":"The amount requested by the user. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","deprecated":true},"amount":{"description":"If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","deprecated":true},"netAmount":{"description":"The net amount of the transaction, after fee deduction. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","deprecated":true},"amountUSD":{"description":"The USD value of the requested amount. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","nullable":true,"deprecated":true},"serviceFee":{"description":"The total fee deducted by the exchange from the actual requested amount (`serviceFee` = `amount` - `netAmount`). Deprecated - please use the `feeInfo` field for accuracy.","type":"number","deprecated":true},"fee":{"description":"Deprecated - please use the `feeInfo` field for accuracy.","type":"number","deprecated":true},"networkFee":{"description":"The fee paid to the network. Deprecated - please use the `feeInfo` field for accuracy.","type":"number","deprecated":true}}},"description":"Find a specific transaction by external transaction ID.\n\nReturns transaction by external transaction ID."},{"method":"post","path":"/transactions/{txId}/set_confirmation_threshold","name":"transactions_set_confirmation_threshold_postByTxid","parameters":[{"type":"object","properties":{"txId":{"type":"string","minimum":1,"description":"The ID of the transaction"},"body":{"type":"object","properties":{"numOfConfirmations":{"type":"number"}}}}}],"output":{"type":"object","properties":{"success":{"type":"boolean"},"transactions":{"type":"array","items":{"type":"string"}}}},"description":"Set confirmation threshold by transaction ID.\n\nOverrides the required number of confirmations for transaction completion by transaction ID."},{"method":"post","path":"/transactions/{txId}/drop","name":"transactions_drop_postByTxid","parameters":[{"type":"object","properties":{"txId":{"type":"string","minimum":1,"description":"The ID of the transaction"},"body":{"type":"object","properties":{"txId":{"type":"string"},"feeLevel":{"type":"string"},"gasPrice":{"type":"string"}}}}}],"output":{"type":"object","properties":{"success":{"type":"boolean"},"transactions":{"type":"array","items":{"type":"string"}}}},"description":"Drop ETH transaction by ID.\n\nDrops a stuck ETH transaction and creates a replacement transaction."},{"method":"post","path":"/transactions/{txId}/cancel","name":"transactions_cancel_postByTxid","parameters":[{"type":"object","properties":{"txId":{"type":"string","minimum":1,"description":"The ID of the transaction to cancel"}}}],"output":{"type":"object","properties":{"success":{"type":"boolean"}}},"description":"Cancel a transaction.\n\nCancels a transaction by ID."},{"method":"post","path":"/transactions/{txId}/freeze","name":"transactions_freeze_postByTxid","parameters":[{"type":"object","properties":{"txId":{"type":"string","minimum":1,"description":"The ID of the transaction to freeze"}}}],"output":{"type":"object","properties":{"success":{"type":"boolean"}}},"description":"Freeze a transaction.\n\nFreezes a transaction by ID."},{"method":"post","path":"/transactions/{txId}/unfreeze","name":"transactions_unfreeze_postByTxid","parameters":[{"type":"object","properties":{"txId":{"type":"string","minimum":1,"description":"The ID of the transaction to unfreeze"}}}],"output":{"type":"object","properties":{"success":{"type":"boolean"}}},"description":"Unfreeze a transaction.\n\nUnfreezes a transaction by ID and makes the transaction available again."},{"method":"post","path":"/txHash/{txHash}/set_confirmation_threshold","name":"txHash_set_confirmation_threshold_postByTxhash","parameters":[{"type":"object","properties":{"txHash":{"type":"string","minimum":1,"description":"The TxHash"},"body":{"type":"object","properties":{"numOfConfirmations":{"type":"number"}}}}}],"output":{"type":"object","properties":{"success":{"type":"boolean"},"transactions":{"type":"array","items":{"type":"string"}}}},"description":"Set confirmation threshold by transaction hash.\n\nOverrides the required number of confirmations for transaction completion by transaction hash."},{"method":"get","path":"/payments/xb-settlements/configs","name":"payments_xb_settlements_configs_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"object","properties":{"configurations":{"type":"array","items":{"type":"object","properties":{"configId":{"type":"string","format":"uuid","description":"Cross Bodrder configuraion unique id"},"corridorId":{"type":"string","enum":["MX_US","CO_US","US_MX","US_EU","US_UK"],"description":"- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n"},"name":{"type":"string","description":"The name for the cross-border ettlement configuration"},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"accountId":{"type":"string"},"inputAssetId":{},"outputAssetId":{}},"required":["accountId"]}},"conversionSlippageBasisPoints":{"type":"integer","minimum":0,"maximum":10000,"default":10000,"description":"Slippage configuarion in basis points, the default value is 10%\n"},"createdAt":{"type":"number","description":"The creation time in epoch format."}},"required":["configId","name","corridorId","steps","conversionSlippageBasisPoints","createdAt"]}}},"required":["configurations"]},"description":"Get all the cross-border settlement configurations.
\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"post","path":"/payments/xb-settlements/configs","name":"payments_xb_settlements_configs_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"name":{"type":"string","description":"The name for the cross-border settlement configuration"},"corridorId":{"type":"string","enum":["MX_US","CO_US","US_MX","US_EU","US_UK"],"description":"- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n"},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"accountId":{"type":"string"},"inputAssetId":{},"outputAssetId":{}},"required":["accountId"]}},"conversionSlippageBasisPoints":{"type":"integer","minimum":0,"maximum":10000,"default":10000,"description":"Slippage configuarion in basis points, the default value is 10%\n"}},"required":["name","corridorId","steps"]}}}],"output":{"type":"object","properties":{"configId":{"type":"string","format":"uuid","description":"Cross Bodrder configuraion unique id"},"corridorId":{"type":"string","enum":["MX_US","CO_US","US_MX","US_EU","US_UK"],"description":"- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n"},"name":{"type":"string","description":"The name for the cross-border ettlement configuration"},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"accountId":{"type":"string"},"inputAssetId":{},"outputAssetId":{}},"required":["accountId"]}},"conversionSlippageBasisPoints":{"type":"integer","minimum":0,"maximum":10000,"default":10000,"description":"Slippage configuarion in basis points, the default value is 10%\n"},"createdAt":{"type":"number","description":"The creation time in epoch format."}},"required":["configId","name","corridorId","steps","conversionSlippageBasisPoints","createdAt"]},"description":"Create a new cross-border settlement configuration.\n\nCreate a new cross-border settlement configuration.
Configurations define the default assets, on-ramps, and off-ramps to use for the cross-border settlement.
\nA configuration must contain at least two steps - `ON_RAMP` and `VAULT_ACCOUNT`.
\nAll other steps (e.g., `OFF_RAMP`, `FIAT_DESTINATION`, etc.) are optional.
\nEvery step must include the `accountId` to be used, while `inputAssetId` and `outputAssetId` are optional. \nIf those are not provided, a default value will be used from the Corridor Settings.
\nIf the inputAssetId or the outputAssetId is provided for one of the objects, all assets in the objects must be consistent. For example, if the output asset of ON_RAMP is XLM_USDC_5F3T, then the input asset of the VAULT_ACCOUNT must also be XLM_USDC_5F3T..
\nYou can set a slippage amount for your configuration. Slippage is defined by basis points (bps). This value can be overloaded on execution. If you do not configure a slippage amount, the default slippage of 10000 bps (10%) is used.
\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"get","path":"/payments/xb-settlements/configs/{configId}","name":"payments_xb_settlements_configs_getByConfigid","parameters":[{"type":"object","properties":{"configId":{"type":"string","description":"The cross-border settlement configuration ID."}}}],"output":{"type":"object","properties":{"configId":{"type":"string","format":"uuid","description":"Cross Bodrder configuraion unique id"},"corridorId":{"type":"string","enum":["MX_US","CO_US","US_MX","US_EU","US_UK"],"description":"- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n"},"name":{"type":"string","description":"The name for the cross-border ettlement configuration"},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"accountId":{"type":"string"},"inputAssetId":{},"outputAssetId":{}},"required":["accountId"]}},"conversionSlippageBasisPoints":{"type":"integer","minimum":0,"maximum":10000,"default":10000,"description":"Slippage configuarion in basis points, the default value is 10%\n"},"createdAt":{"type":"number","description":"The creation time in epoch format."}},"required":["configId","name","corridorId","steps","conversionSlippageBasisPoints","createdAt"]},"description":"Get a specific cross-border settlement configuration.
\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"put","path":"/payments/xb-settlements/configs/{configId}","name":"payments_xb_settlements_configs_putByConfigid","parameters":[{"type":"object","properties":{"configId":{"type":"string","description":"The cross-border settlement configuration ID."},"body":{"type":"object","properties":{"name":{"type":"string","description":"The name for the cross-border settlement configuration"},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"accountId":{"type":"string"},"inputAssetId":{},"outputAssetId":{}},"required":["accountId"]}},"conversionSlippageBasisPoints":{"type":"integer","minimum":0,"maximum":10000,"default":10000,"description":"Slippage configuarion in basis points, the default value is 10%\n"}},"required":["name","steps"]}}}],"output":{"type":"object","properties":{"configId":{"type":"string","format":"uuid","description":"Cross Bodrder configuraion unique id"},"corridorId":{"type":"string","enum":["MX_US","CO_US","US_MX","US_EU","US_UK"],"description":"- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n"},"name":{"type":"string","description":"The name for the cross-border ettlement configuration"},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"accountId":{"type":"string"},"inputAssetId":{},"outputAssetId":{}},"required":["accountId"]}},"conversionSlippageBasisPoints":{"type":"integer","minimum":0,"maximum":10000,"default":10000,"description":"Slippage configuarion in basis points, the default value is 10%\n"},"createdAt":{"type":"number","description":"The creation time in epoch format."}},"required":["configId","name","corridorId","steps","conversionSlippageBasisPoints","createdAt"]},"description":"Edit a cross-border settlement configuration.\nEditing a configuration does not affect previously executed flows that used the configuration.\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"delete","path":"/payments/xb-settlements/configs/{configId}","name":"payments_xb_settlements_configs_eraseByConfigid","parameters":[{"type":"object","properties":{"configId":{"type":"string","description":"The cross-border settlement configuration ID."}}}],"output":{"type":"object","properties":{"configId":{"type":"string","format":"uuid","description":"Cross Bodrder configuraion unique id"},"corridorId":{"type":"string","enum":["MX_US","CO_US","US_MX","US_EU","US_UK"],"description":"- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n"},"name":{"type":"string","description":"The name for the cross-border ettlement configuration"},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"accountId":{"type":"string"},"inputAssetId":{},"outputAssetId":{}},"required":["accountId"]}},"conversionSlippageBasisPoints":{"type":"integer","minimum":0,"maximum":10000,"default":10000,"description":"Slippage configuarion in basis points, the default value is 10%\n"},"createdAt":{"type":"number","description":"The creation time in epoch format."}},"required":["configId","name","corridorId","steps","conversionSlippageBasisPoints","createdAt"]},"description":"Delete a cross-border settlement configuration.\nThis does not delete or remove previously executed flows that used this configuration.\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"post","path":"/payments/xb-settlements/flows","name":"payments_xb_settlements_flows_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"configId":{"type":"string","format":"uuid","description":"Cross Bodrder configuraion unique id"},"amount":{"type":"string","description":"The amount to transfer in this cross-border flow. The type of asset is defined by the cross-border settlement configuration."}},"required":["configId","amount"]}}}],"output":{"type":"object","properties":{"flowId":{"type":"string","description":"The unique id for the cross-border flow."},"configId":{"type":"string","format":"uuid","description":"Cross Bodrder configuraion unique id"},"conversionRate":{"type":"string","description":"The conversion rate received from the on-ramp or off-ramp."},"inputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"estimatedOutputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"totalEstimatedFee":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"totalEstimatedTime":{"type":"number","description":"The total *estimated* time for executing the cross-border flow."},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"accountId":{"type":"string"},"inputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"outputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"estimatedFeeAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"estimatedTime":{"type":"number","description":"The estimated time for executing the step."},"isSignRequired":{"type":"boolean","description":"Whether or not signing is required for executing the step."}},"required":["accountId","inputAmount","outputAmount","estimatedFeeAmount","estimatedTime","isSignRequired"]}}},"required":["flowId","configId","steps","inputAmount","estimatedOutputAmount","totalEstimatedFee","totalEstimatedTime","conversionRate"]},"description":"Create a new cross-border settlement flow.\n\nCreate a cross-border flow (based on a cross-border configuration) with an amount to transfer. \nThe assetId is defined by the cross-border configuration.\nCreating a flow triggers a calculation of the flow estimations, including FX rates, times, and fees based on the amount provided.\nCreating a cross-border flow will not execute the flow.\n\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"get","path":"/payments/xb-settlements/flows/{flowId}","name":"payments_xb_settlements_flows_getByFlowid","parameters":[{"type":"object","properties":{"flowId":{"type":"string","description":"The cross-border settlement flow ID."}}}],"output":{"type":"object","properties":{"preview":{"type":"object","properties":{"flowId":{"type":"string","description":"The unique id for the cross-border flow."},"configId":{"type":"string","format":"uuid","description":"Cross Bodrder configuraion unique id"},"conversionRate":{"type":"string","description":"The conversion rate received from the on-ramp or off-ramp."},"inputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"estimatedOutputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"totalEstimatedFee":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"totalEstimatedTime":{"type":"number","description":"The total *estimated* time for executing the cross-border flow."},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"accountId":{"type":"string"},"inputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"outputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"estimatedFeeAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"estimatedTime":{"type":"number","description":"The estimated time for executing the step."},"isSignRequired":{"type":"boolean","description":"Whether or not signing is required for executing the step."}},"required":["accountId","inputAmount","outputAmount","estimatedFeeAmount","estimatedTime","isSignRequired"]}}},"required":["flowId","configId","steps","inputAmount","estimatedOutputAmount","totalEstimatedFee","totalEstimatedTime","conversionRate"]},"execution":{"type":"object","properties":{"flowId":{"type":"string","description":"The unique id for the cross-border flow."},"configId":{"type":"string","format":"uuid","description":"Cross Bodrder configuraion unique id"},"inputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"outputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"totalFee":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"initiatedAt":{"type":"number","description":"The time the cross-border flow executed in epoch format."},"initiatedBy":{"description":"The id of the user which launched the flow","type":"string"},"state":{"type":"string","enum":["NOT_LAUNCHED","PROCESSING","COMPLETED","FAILED"]},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"id":{"type":"string","description":"A unique id for the step execution"},"accountId":{"type":"string"},"status":{"type":"string","enum":["NOT_STARTED","PROCESSING","COMPLETED","FAILED"]},"inputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"outputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"fee":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"startedAt":{"type":"number","description":"The step execution start time in epoch format."},"completedAt":{"type":"number","description":"The step execution end time in epoch format."},"isSignRequired":{"type":"boolean","description":"Whether or not signing is required for executing the step."}},"required":["id","accountId","status","inputAmount","isSignRequired"]}},"selectedConversionSlippage":{"type":"object","description":"Indicates the selected slippage used during the flow since override logic may have taken place.","properties":{"basisPoints":{"type":"number"},"reason":{"type":"string","enum":["DEFAULT","CONFIG","FLOW"]}},"required":["basisPoints","reason"]}},"required":["flowId","configId","steps","inputAmount","outputAmount","totalFee","initiatedAt","initiatedBy","state","selectedConversionSlippage"]}}},"description":"Get specific cross-border settlement flow details.\n\nGets details for a specific cross-border settlement flow\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"post","path":"/payments/xb-settlements/flows/{flowId}/actions/execute","name":"payments_xb_settlements_flows_actions_execute_postByFlowid","parameters":[{"type":"object","properties":{"flowId":{"type":"string","description":"The cross-border settlement flow ID."},"body":{"type":"object","properties":{"conversionSlippageBasisPoints":{"type":"integer","minimum":0,"maximum":10000,"default":10000,"description":"Slippage configuarion in basis points, the default value is 10%\n"}}}}}],"output":{"type":"object","properties":{"flowId":{"type":"string","description":"The unique id for the cross-border flow."},"configId":{"type":"string","format":"uuid","description":"Cross Bodrder configuraion unique id"},"inputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"outputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"totalFee":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"initiatedAt":{"type":"number","description":"The time the cross-border flow executed in epoch format."},"initiatedBy":{"description":"The id of the user which launched the flow","type":"string"},"state":{"type":"string","enum":["NOT_LAUNCHED","PROCESSING","COMPLETED","FAILED"]},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"id":{"type":"string","description":"A unique id for the step execution"},"accountId":{"type":"string"},"status":{"type":"string","enum":["NOT_STARTED","PROCESSING","COMPLETED","FAILED"]},"inputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"outputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"fee":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"startedAt":{"type":"number","description":"The step execution start time in epoch format."},"completedAt":{"type":"number","description":"The step execution end time in epoch format."},"isSignRequired":{"type":"boolean","description":"Whether or not signing is required for executing the step."}},"required":["id","accountId","status","inputAmount","isSignRequired"]}},"selectedConversionSlippage":{"type":"object","description":"Indicates the selected slippage used during the flow since override logic may have taken place.","properties":{"basisPoints":{"type":"number"},"reason":{"type":"string","enum":["DEFAULT","CONFIG","FLOW"]}},"required":["basisPoints","reason"]}},"required":["flowId","configId","steps","inputAmount","outputAmount","totalFee","initiatedAt","initiatedBy","state","selectedConversionSlippage"]},"description":"Execute cross-border settlement flow.\n\nSend a payment flow with 'flowId' for execution.\nIf a differet slippage configuraion is needed for this execution than configured in the flow configuration, the request body must define the desired slippage configuration for this execution.\n\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"post","path":"/payments/payout","name":"payments_payout_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"paymentAccount":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["VAULT_ACCOUNT","EXCHANGE_ACCOUNT","FIAT_ACCOUNT"]}},"required":["id","type"]},"instructionSet":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"payeeAccount":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["VAULT_ACCOUNT","EXCHANGE_ACCOUNT","INTERNAL_WALLET","EXTERNAL_WALLET","NETWORK_CONNECTION","FIAT_ACCOUNT"],"description":"- VAULT_ACCOUNT \ta native Fireblocks vault account\n- EXCHANGE_ACCOUNT \ta third-party exchange account\n- INTERNAL_WALLET \ta whitelisted address marked as internal to the workspace/organization\n- EXTERNAL_WALLET\ta whitelisted address marked as external\n- NETWORK_CONNECTION\ta member of the Fireblocks network\n- FIAT_ACCOUNT\ta third-party account of a fiat bank (Signature, BCB, etc)\n"}},"required":["id","type"]},"amount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{"type":"string"}},"required":["amount","assetId"]}},"required":["amount","payeeAccount"]}}},"required":["paymentAccount","instructionSet"]}}}],"output":{"type":"object","properties":{"payoutId":{"type":"string"},"paymentAccount":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["VAULT_ACCOUNT","EXCHANGE_ACCOUNT","FIAT_ACCOUNT"]}}},"createdAt":{"type":"number"},"state":{"type":"string","enum":["CREATED","FILE_FOUND","REQUESTED","TRANSLATED","PROCESSING","SUBMITTED","FINALIZED","INSUFFICIENT_BALANCE","FAILED"],"description":"- CREATED - payout instruction set created with all its details\n- FILE_FOUND - new file found in the FTP\n- REQUESTED - payout requested with all its details\n- TRANSLATED - payout instruction account IDs identified and translated\n- PROCESSING - payout instruction set executed and is processing\n- SUBMITTED - transactions submitted for payout instructions\n- FINALIZED - payout finished processing, all transactions processed successfully\n- INSUFFICIENT_BALANCE - insufficient balance in the payment account (can be a temporary state)\n- FAILED - one or more of the payout instructions failed\n"},"status":{"type":"string","enum":["REGISTERED","VERIFYING","IN_PROGRESS","DONE","INSUFFICIENT_BALANCE","FAILED"],"description":"- REQUESTED\tpayout requested with all its details\n- VERIFIED\tpayout instruction set details were verified\n- PROCESSING\tpayout instruction set executed and is processing\n- FINALIZED\tpayout done (all payout instructions completed successfully)\n- INSUFFICIENT_BALANCE\tinsufficient balance in the payment account (can be a temporary state)\n- FAILED\tone or more of the payout instructions failed\n"},"reasonOfFailure":{"type":"string","description":"
    \n
  • INSUFFICIENT_BALANCE
  • \n
  • SOURCE_TRANSLATION
  • \n
  • SOURCE_NOT_UNIQUE
  • \n
  • SOURCE_NOT_FOUND
  • \n
  • SOURCE_TYPE_NOT_SUPPORTED
  • \n
  • EMPTY_SOURCE
  • \n
  • DESTINATION_TRANSLATION
  • \n
  • DESTINATION_NOT_UNIQUE
  • \n
  • DESTINATION_NOT_FOUND
  • \n
  • EMPTY_DESTINATION
  • \n
  • PARSING
  • \n
  • UNKNOWN
  • \n
  • FIREBLOCKS_CLIENT
  • \n
  • TRANSACTION_SUBMISSION
  • \n
\n"},"initMethod":{"type":"string","enum":["FILE","API"]},"instructionSet":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"payeeAccount":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["VAULT_ACCOUNT","EXCHANGE_ACCOUNT","INTERNAL_WALLET","EXTERNAL_WALLET","NETWORK_CONNECTION","FIAT_ACCOUNT"],"description":"- VAULT_ACCOUNT \ta native Fireblocks vault account\n- EXCHANGE_ACCOUNT \ta third-party exchange account\n- INTERNAL_WALLET \ta whitelisted address marked as internal to the workspace/organization\n- EXTERNAL_WALLET\ta whitelisted address marked as external\n- NETWORK_CONNECTION\ta member of the Fireblocks network\n- FIAT_ACCOUNT\ta third-party account of a fiat bank (Signature, BCB, etc)\n"}}},"amount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{"type":"string"}},"required":["amount","assetId"]},"state":{"type":"string","enum":["NOT_STARTED","TRANSACTION_SENT","COMPLETED","FAILED","TRANSLATION_ERROR","SKIPPED"],"description":"- NOT_STARTED\t- waiting to start\n- TRANSACTION_SENT - an underlying transaction was sent\n- COMPLETED\t- completed successfully\n- FAILED - failed\n- TRANSLATION_ERROR -lookup of the destination failed (due to changes in the underlying whitelisted external wallet or similar)\n- SKIPPED- no transaction(s) created for this instruction\n"},"transactions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["SUBMITTED","QUEUED","PENDING_AUTHORIZATION","PENDING_SIGNATURE","BROADCASTING","PENDING_3RD_PARTY_MANUAL_APPROVAL","PENDING_3RD_PARTY","PENDING","CONFIRMING","CONFIRMED","COMPLETED","PARTIALLY_COMPLETED","PENDING_AML_SCREENING","CANCELLING","CANCELLED","REJECTED","BLOCKED","FAILED","TIMEOUT"]},"timestamp":{"type":"number","format":"date-time"},"instructionId":{"type":"string"}},"required":["id","state"]}}},"required":["amount","payeeAccount","state","transactions"]}},"reportUrl":{"type":"string"}},"required":["payoutId","createdAt","state","status","paymentAccount","instructionSet"]},"description":"Create a payout instruction set.\n\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoints include APIs available only for customers with Payments Engine enabled on their accounts.
\n
These endpoints are currently in beta and might be subject to changes.
\n
If you want to learn more about Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or email CSM@fireblocks.com.
\n
Create a payout instruction set.
\nA payout instruction set is a set of instructions for distributing payments from a single payment account to a list of payee accounts.
\nThe instruction set defines:
\n
    \n
  • the payment account and its account type (vault, exchange, or fiat).
  • \n
  • the account type (vault account, exchange account, whitelisted address, network connection, fiat account, or merchant account), the amount, and the asset of payment for each payee account.
  • \n
\n"},{"method":"post","path":"/payments/payout/{payoutId}/actions/execute","name":"payments_payout_actions_execute_postByPayoutid","parameters":[{"type":"object","properties":{"payoutId":{"type":"string","description":"the payout id received from the creation of the payout instruction set"}}}],"output":{"type":"object","properties":{"payoutId":{"type":"string"}},"required":["payoutId"]},"description":"Execute a payout instruction set.\n\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoints include APIs available only for customers with Payments Engine enabled on their accounts.
\n
These endpoints are currently in beta and might be subject to changes.
\n
If you want to learn more about Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or email CSM@fireblocks.com.
\n
Execute a payout instruction set.
\n
The instruction set will be verified and executed.
\nSource locking
\nIf you are executing a payout instruction set from a payment account with an already active payout the active payout will complete before the new payout instruction set can be executed.
\nYou cannot execute the same payout instruction set more than once.\n"},{"method":"get","path":"/payments/payout/{payoutId}","name":"payments_payout_getByPayoutid","parameters":[{"type":"object","properties":{"payoutId":{"type":"string","description":"the payout id received from the creation of the payout instruction set"}}}],"output":{"type":"object","properties":{"payoutId":{"type":"string"},"paymentAccount":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["VAULT_ACCOUNT","EXCHANGE_ACCOUNT","FIAT_ACCOUNT"]}}},"createdAt":{"type":"number"},"state":{"type":"string","enum":["CREATED","FILE_FOUND","REQUESTED","TRANSLATED","PROCESSING","SUBMITTED","FINALIZED","INSUFFICIENT_BALANCE","FAILED"],"description":"- CREATED - payout instruction set created with all its details\n- FILE_FOUND - new file found in the FTP\n- REQUESTED - payout requested with all its details\n- TRANSLATED - payout instruction account IDs identified and translated\n- PROCESSING - payout instruction set executed and is processing\n- SUBMITTED - transactions submitted for payout instructions\n- FINALIZED - payout finished processing, all transactions processed successfully\n- INSUFFICIENT_BALANCE - insufficient balance in the payment account (can be a temporary state)\n- FAILED - one or more of the payout instructions failed\n"},"status":{"type":"string","enum":["REGISTERED","VERIFYING","IN_PROGRESS","DONE","INSUFFICIENT_BALANCE","FAILED"],"description":"- REQUESTED\tpayout requested with all its details\n- VERIFIED\tpayout instruction set details were verified\n- PROCESSING\tpayout instruction set executed and is processing\n- FINALIZED\tpayout done (all payout instructions completed successfully)\n- INSUFFICIENT_BALANCE\tinsufficient balance in the payment account (can be a temporary state)\n- FAILED\tone or more of the payout instructions failed\n"},"reasonOfFailure":{"type":"string","description":"
    \n
  • INSUFFICIENT_BALANCE
  • \n
  • SOURCE_TRANSLATION
  • \n
  • SOURCE_NOT_UNIQUE
  • \n
  • SOURCE_NOT_FOUND
  • \n
  • SOURCE_TYPE_NOT_SUPPORTED
  • \n
  • EMPTY_SOURCE
  • \n
  • DESTINATION_TRANSLATION
  • \n
  • DESTINATION_NOT_UNIQUE
  • \n
  • DESTINATION_NOT_FOUND
  • \n
  • EMPTY_DESTINATION
  • \n
  • PARSING
  • \n
  • UNKNOWN
  • \n
  • FIREBLOCKS_CLIENT
  • \n
  • TRANSACTION_SUBMISSION
  • \n
\n"},"initMethod":{"type":"string","enum":["FILE","API"]},"instructionSet":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"payeeAccount":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["VAULT_ACCOUNT","EXCHANGE_ACCOUNT","INTERNAL_WALLET","EXTERNAL_WALLET","NETWORK_CONNECTION","FIAT_ACCOUNT"],"description":"- VAULT_ACCOUNT \ta native Fireblocks vault account\n- EXCHANGE_ACCOUNT \ta third-party exchange account\n- INTERNAL_WALLET \ta whitelisted address marked as internal to the workspace/organization\n- EXTERNAL_WALLET\ta whitelisted address marked as external\n- NETWORK_CONNECTION\ta member of the Fireblocks network\n- FIAT_ACCOUNT\ta third-party account of a fiat bank (Signature, BCB, etc)\n"}}},"amount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{"type":"string"}},"required":["amount","assetId"]},"state":{"type":"string","enum":["NOT_STARTED","TRANSACTION_SENT","COMPLETED","FAILED","TRANSLATION_ERROR","SKIPPED"],"description":"- NOT_STARTED\t- waiting to start\n- TRANSACTION_SENT - an underlying transaction was sent\n- COMPLETED\t- completed successfully\n- FAILED - failed\n- TRANSLATION_ERROR -lookup of the destination failed (due to changes in the underlying whitelisted external wallet or similar)\n- SKIPPED- no transaction(s) created for this instruction\n"},"transactions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["SUBMITTED","QUEUED","PENDING_AUTHORIZATION","PENDING_SIGNATURE","BROADCASTING","PENDING_3RD_PARTY_MANUAL_APPROVAL","PENDING_3RD_PARTY","PENDING","CONFIRMING","CONFIRMED","COMPLETED","PARTIALLY_COMPLETED","PENDING_AML_SCREENING","CANCELLING","CANCELLED","REJECTED","BLOCKED","FAILED","TIMEOUT"]},"timestamp":{"type":"number","format":"date-time"},"instructionId":{"type":"string"}},"required":["id","state"]}}},"required":["amount","payeeAccount","state","transactions"]}},"reportUrl":{"type":"string"}},"required":["payoutId","createdAt","state","status","paymentAccount","instructionSet"]},"description":"Get the status of a payout instruction set.\n\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoints include APIs available only for customers with Payments Engine enabled on their accounts.
\n
These endpoints are currently in beta and might be subject to changes.
\n
If you want to learn more about Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or email CSM@fireblocks.com.
\n"},{"method":"get","path":"/gas_station","name":"gas_station_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"object","properties":{"balance":{"type":"object"},"configuration":{"type":"object","properties":{"gasThreshold":{"type":"string"},"gasCap":{"type":"string"},"maxGasPrice":{"type":"string"}}}},"required":["low","medium","high"]},"description":"Get gas station settings.\n\nReturns gas station settings and ETH balance."},{"method":"get","path":"/gas_station/{assetId}","name":"gas_station_getByAssetid","parameters":[{"type":"object","properties":{"assetId":{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"}}}],"output":{"type":"object","properties":{"balance":{"type":"object"},"configuration":{"type":"object","properties":{"gasThreshold":{"type":"string"},"gasCap":{"type":"string"},"maxGasPrice":{"type":"string"}}}},"required":["low","medium","high"]},"description":"Get gas station settings by asset.\n\nReturns gas station settings and balances for a requested asset."},{"method":"put","path":"/gas_station/configuration","name":"gas_station_configuration_put","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"gasThreshold":{"type":"string"},"gasCap":{"type":"string"},"maxGasPrice":{"type":"string"}}}}}],"description":"Edit gas station settings.\n\nConfigures gas station settings for ETH."},{"method":"put","path":"/gas_station/configuration/{assetId}","name":"gas_station_configuration_putByAssetid","parameters":[{"type":"object","properties":{"assetId":{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"},"body":{"type":"object","properties":{"gasThreshold":{"type":"string"},"gasCap":{"type":"string"},"maxGasPrice":{"type":"string"}}}}}],"description":"Edit gas station settings for an asset.\n\nConfigures gas station settings for a requested asset."},{"method":"get","path":"/users","name":"users_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"object","properties":{"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"role":{"type":"string"},"email":{"type":"string"},"enabled":{"type":"boolean"}}}}}},"description":"List users.\n\nList all users for the workspace.\n\nPlease note that this endpoint is available only for API keys with Admin permissions.\n"},{"method":"get","path":"/audits","name":"audits_get","parameters":[{"type":"object","properties":{"query":{"type":"object","properties":{},"required":[]}}}],"description":"Get audit logs"},{"method":"post","path":"/off_exchange/add","name":"off_exchange_add_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"transactionRequest":{"type":"object","properties":{"operation":{"type":"string","enum":["TRANSFER","BURN","CONTRACT_CALL","MINT","RAW","TYPED_MESSAGE"],"description":"* `TRANSFER` - The default value for an operation. Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n"},"note":{"type":"string","description":"Custom note, not sent to the blockchain, to describe the transaction at your Fireblocks workspace.","example":"Ticket 123"},"externalTxId":{"type":"string","description":"An optional but highly recommended parameter. Fireblocks will reject future transactions with same ID. \n \nYou should set this to a unique ID representing the transaction, to avoid submitting the same transaction twice. This helps with cases where submitting the transaction responds with an error code due to Internet interruptions, but the transaction was actually sent and processed. To validate whether a transaction has been processed, [Find a specific transaction by external transaction ID](https://developers.fireblocks.com/reference/get_transactions-external-tx-id-externaltxid).\n \nThere is no specific format required for this parameter.","example":"00000000-0000-0000-0000-000000000000"},"assetId":{"type":"string","description":"The ID of the asset to transfer, for `TRANSFER`, `MINT` or `BURN` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)","x-fb-entity":"asset","example":"ETH"},"source":{"type":"object","properties":{"type":{"type":"string","enum":["VAULT_ACCOUNT","EXCHANGE_ACCOUNT","INTERNAL_WALLET","EXTERNAL_WALLET","NETWORK_CONNECTION","FIAT_ACCOUNT","COMPOUND","GAS_STATION","ONE_TIME_ADDRESS","UNKNOWN","END_USER_WALLET"]},"subType":{"type":"string","enum":["BINANCE","BINANCEUS","BITFINEX","BITHUMB","BITMEX","BITSO","BITSTAMP","BITTREX","BLINC","BYBIT","CIRCLE","COINBASEEXCHANGE","COINBASEPRO","COINMETRO","COINSPRO","CRYPTOCOM","DERIBIT","GEMINI","HITBTC","HUOBI","INDEPENDENTRESERVE","KORBIT","KRAKEN","KRAKENINTL","KUCOIN","LIQUID","OKCOIN","OKEX","PAXOS","POLONIEX","External","Internal"]},"id":{"type":"string"},"name":{"type":"string"},"walletId":{"type":"string","format":"uuid"}},"required":["type"]},"destination":{},"destinations":{"type":"array","description":"For UTXO based blockchains, you can send a single transaction to multiple destinations.","items":{"type":"object","properties":{"amount":{"type":"string"},"destination":{}}}},"amount":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"0.02"},{"type":"number","description":"Number (deprecated)","example":0.02}],"description":"For `TRANSFER` operations, the requested amount to transfer, in the asset’s unit. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"treatAsGrossAmount":{"type":"boolean","description":"\"When set to `true`, the fee will be deducted from the requested amount.\"\n\n**Note**: This parameter can only be considered if a transaction’s asset is a base asset, such as ETH or MATIC. If the asset can’t be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account."},"forceSweep":{"type":"boolean","description":"For Polkadot, Kusama and Westend transactions only. When set to true, Fireblocks will empty the asset wallet.\n\n **Note:** If set to true when the source account is exactly 1 DOT, the transaction will fail. Any amount more or less than 1 DOT succeeds. This is a Polkadot blockchain limitation."},"feeLevel":{"type":"string","enum":["LOW","MEDIUM","HIGH"],"description":"For UTXO or EVM-based blockchains only. Defines the blockchain fee level which will be payed for the transaction. Alternatively, specific fee estimation parameters exist below."},"fee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For UTXO-based blockchains, the fee per bytes in the asset’s smallest unit (Satoshi, Latoshi, etc.). For Ripple, the fee for the transaction. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"priorityFee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"2"},{"type":"number","description":"Number (deprecated)","example":2}],"description":"For Ethereum-based blockchains only, the fee for EIP-1559 transaction pricing mechanism. Value is in Gwei. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"failOnLowFee":{"type":"boolean","description":"When set to `true`, in case the current `MEDIUM` fee level is higher than the one specified in the transaction, the transaction will fail to avoid getting stuck with no confirmations."},"maxFee":{"description":"The maximum fee (gas price or fee per byte) that should be payed for the transaction. In case the current value of the requested `feeLevel` is higher than this requested maximum fee. Represented by a numeric string for accurate precision.","type":"string","example":"120"},"gasLimit":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"21000"},{"type":"number","description":"Number (deprecated)","example":21000}],"description":"For EVM-based blockchains only. Units of gas required to process the transaction. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"gasPrice":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For non-EIP-1559, EVM-based transactions. Price per gas unit (in Ethereum this is specified in Gwei). Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"networkFee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For EVM-based blockchains only. The total transaction fee in the blockchain’s largest unit. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated. - The transaction blockchain fee.\n- For Ethereum, you can't pass gasPrice, gasLimit and networkFee all together.\n- A numeric value representation is required."},"replaceTxByHash":{"type":"string","description":"For EVM-based blockchains only. In case a transaction is stuck, specify the hash of the stuck transaction to replace it by this transaction with a higher fee, or to replace it with this transaction with a zero fee and drop it from the blockchain.","example":"00000000-0000-0000-0000-000000000000"},"extraParameters":{"type":"object","properties":{},"description":"Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n"},"customerRefId":{"type":"string","description":"The ID for AML providers to associate the owner of funds with transactions.","example":"abcdef"},"autoStaking":{"type":"boolean","description":"This feature is no longer supported."},"networkStaking":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"This feature is no longer supported."},"cpuStaking":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"This feature is no longer supported."}}},"isSrcCollateral":{"type":"boolean","description":"optional"}}}}}],"output":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the transaction."},"status":{"type":"string","description":"The primary status of the transaction. For details, see [Primary transaction statuses.] (https://developers.fireblocks.com/reference/primary-transaction-statuses)"},"systemMessages":{"type":"object","properties":{"type":{"type":"string","enum":["WARN","BLOCK"]},"message":{"type":"string","description":"A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.","example":"Slow transaction processing. Outgoing transactions might be stuck."}}}}},"description":"add collateral, create deposit request"},{"method":"post","path":"/off_exchange/remove","name":"off_exchange_remove_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"transactionRequest":{"type":"object","properties":{"operation":{"type":"string","enum":["TRANSFER","BURN","CONTRACT_CALL","MINT","RAW","TYPED_MESSAGE"],"description":"* `TRANSFER` - The default value for an operation. Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n"},"note":{"type":"string","description":"Custom note, not sent to the blockchain, to describe the transaction at your Fireblocks workspace.","example":"Ticket 123"},"externalTxId":{"type":"string","description":"An optional but highly recommended parameter. Fireblocks will reject future transactions with same ID. \n \nYou should set this to a unique ID representing the transaction, to avoid submitting the same transaction twice. This helps with cases where submitting the transaction responds with an error code due to Internet interruptions, but the transaction was actually sent and processed. To validate whether a transaction has been processed, [Find a specific transaction by external transaction ID](https://developers.fireblocks.com/reference/get_transactions-external-tx-id-externaltxid).\n \nThere is no specific format required for this parameter.","example":"00000000-0000-0000-0000-000000000000"},"assetId":{"type":"string","description":"The ID of the asset to transfer, for `TRANSFER`, `MINT` or `BURN` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)","x-fb-entity":"asset","example":"ETH"},"source":{"type":"object","properties":{"type":{"type":"string","enum":["VAULT_ACCOUNT","EXCHANGE_ACCOUNT","INTERNAL_WALLET","EXTERNAL_WALLET","NETWORK_CONNECTION","FIAT_ACCOUNT","COMPOUND","GAS_STATION","ONE_TIME_ADDRESS","UNKNOWN","END_USER_WALLET"]},"subType":{"type":"string","enum":["BINANCE","BINANCEUS","BITFINEX","BITHUMB","BITMEX","BITSO","BITSTAMP","BITTREX","BLINC","BYBIT","CIRCLE","COINBASEEXCHANGE","COINBASEPRO","COINMETRO","COINSPRO","CRYPTOCOM","DERIBIT","GEMINI","HITBTC","HUOBI","INDEPENDENTRESERVE","KORBIT","KRAKEN","KRAKENINTL","KUCOIN","LIQUID","OKCOIN","OKEX","PAXOS","POLONIEX","External","Internal"]},"id":{"type":"string"},"name":{"type":"string"},"walletId":{"type":"string","format":"uuid"}},"required":["type"]},"destination":{},"destinations":{"type":"array","description":"For UTXO based blockchains, you can send a single transaction to multiple destinations.","items":{"type":"object","properties":{"amount":{"type":"string"},"destination":{}}}},"amount":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"0.02"},{"type":"number","description":"Number (deprecated)","example":0.02}],"description":"For `TRANSFER` operations, the requested amount to transfer, in the asset’s unit. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"treatAsGrossAmount":{"type":"boolean","description":"\"When set to `true`, the fee will be deducted from the requested amount.\"\n\n**Note**: This parameter can only be considered if a transaction’s asset is a base asset, such as ETH or MATIC. If the asset can’t be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account."},"forceSweep":{"type":"boolean","description":"For Polkadot, Kusama and Westend transactions only. When set to true, Fireblocks will empty the asset wallet.\n\n **Note:** If set to true when the source account is exactly 1 DOT, the transaction will fail. Any amount more or less than 1 DOT succeeds. This is a Polkadot blockchain limitation."},"feeLevel":{"type":"string","enum":["LOW","MEDIUM","HIGH"],"description":"For UTXO or EVM-based blockchains only. Defines the blockchain fee level which will be payed for the transaction. Alternatively, specific fee estimation parameters exist below."},"fee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For UTXO-based blockchains, the fee per bytes in the asset’s smallest unit (Satoshi, Latoshi, etc.). For Ripple, the fee for the transaction. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"priorityFee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"2"},{"type":"number","description":"Number (deprecated)","example":2}],"description":"For Ethereum-based blockchains only, the fee for EIP-1559 transaction pricing mechanism. Value is in Gwei. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"failOnLowFee":{"type":"boolean","description":"When set to `true`, in case the current `MEDIUM` fee level is higher than the one specified in the transaction, the transaction will fail to avoid getting stuck with no confirmations."},"maxFee":{"description":"The maximum fee (gas price or fee per byte) that should be payed for the transaction. In case the current value of the requested `feeLevel` is higher than this requested maximum fee. Represented by a numeric string for accurate precision.","type":"string","example":"120"},"gasLimit":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"21000"},{"type":"number","description":"Number (deprecated)","example":21000}],"description":"For EVM-based blockchains only. Units of gas required to process the transaction. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"gasPrice":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For non-EIP-1559, EVM-based transactions. Price per gas unit (in Ethereum this is specified in Gwei). Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"networkFee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For EVM-based blockchains only. The total transaction fee in the blockchain’s largest unit. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated. - The transaction blockchain fee.\n- For Ethereum, you can't pass gasPrice, gasLimit and networkFee all together.\n- A numeric value representation is required."},"replaceTxByHash":{"type":"string","description":"For EVM-based blockchains only. In case a transaction is stuck, specify the hash of the stuck transaction to replace it by this transaction with a higher fee, or to replace it with this transaction with a zero fee and drop it from the blockchain.","example":"00000000-0000-0000-0000-000000000000"},"extraParameters":{"type":"object","properties":{},"description":"Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n"},"customerRefId":{"type":"string","description":"The ID for AML providers to associate the owner of funds with transactions.","example":"abcdef"},"autoStaking":{"type":"boolean","description":"This feature is no longer supported."},"networkStaking":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"This feature is no longer supported."},"cpuStaking":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"This feature is no longer supported."}}},"isDstCollateral":{"type":"boolean","description":"optional"}}}}}],"output":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the transaction."},"status":{"type":"string","description":"The primary status of the transaction. For details, see [Primary transaction statuses.] (https://developers.fireblocks.com/reference/primary-transaction-statuses)"},"systemMessages":{"type":"object","properties":{"type":{"type":"string","enum":["WARN","BLOCK"]},"message":{"type":"string","description":"A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.","example":"Slow transaction processing. Outgoing transactions might be stuck."}}}}},"description":"remove collateral, create withdraw request"},{"method":"get","path":"/off_exchange/collateral_accounts/{mainExchangeAccountId}","name":"off_exchange_collateral_accounts_getByMainexchangeaccountid","parameters":[{"type":"object","properties":{"mainExchangeAccountId":{"type":"string","minimum":1,"description":"The id of the main exchange account for which the requested collateral account is associated with"}}}],"output":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["BINANCE","BINANCEUS","BITFINEX","BITHUMB","BITMEX","BITSO","BITSTAMP","BITTREX","CIRCLE","COINBASEPRO","COINMETRO","COINSPRO","CRYPTOCOM","DERIBIT","FTX","FIXUS","GEMINI","HITBTC","HUOBI","KORBIT","KRAKEN","LIQUID","POLONIEX","OKCOIN","OKEX","SEEDCX"]},"name":{"type":"string","description":"Display name of the exchange account"},"status":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"total":{"type":"string"},"available":{"type":"string"}}}},"tradingAccounts":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"total":{"type":"string"},"available":{"type":"string"}}}}}}},"isSubaccount":{"type":"boolean","description":"True if the account is a subaccount in an exchange"},"mainAccountId":{"description":"if the account is a sub-account, the ID of the main account","type":"string"}}},"description":"Find a specific collateral exchange account.\n\nReturns a collateral account by mainExchangeAccountId."},{"method":"post","path":"/webhooks/resend","name":"webhooks_resend_post","parameters":[{"type":"object","properties":{}}],"output":{"type":"object","properties":{"messagesCount":{"type":"number"}}},"description":"Resend failed webhooks.\n\nResends all failed webhook notifications."},{"method":"post","path":"/webhooks/resend/{txId}","name":"webhooks_resend_postByTxid","parameters":[{"type":"object","properties":{"txId":{"type":"string","minimum":1,"description":"The ID of the transaction for webhooks"},"body":{}}}],"description":"Resend failed webhooks for a transaction by ID.\n\nResends failed webhook notifications for a transaction by ID."},{"method":"get","path":"/nfts/ownership/tokens","name":"nfts_ownership_tokens_get","parameters":[{"type":"object","properties":{"query":{"type":"object","properties":{"vaultAccountIds":{"type":"string","description":"A comma separated list of Vault Account IDs. Up to 100 are allowed in a single request"},"ids":{"type":"string","description":"A comma separated list of NFT IDs. Up to 100 are allowed in a single request."},"collectionIds":{"type":"string","description":"A comma separated list of collection IDs. Up to 100 are allowed in a single request."},"pageCursor":{"type":"string","description":"Page cursor to fetch"},"pageSize":{"minimum":1,"maximum":100,"type":"number","description":"Items per page (max 100)"},"sort":{"type":"array","items":{"type":"string","enum":["ownershipLastUpdateTime","name","collection.name","blockchainDescriptor"]},"description":"Sort by param, it can be one param or a list of params separated by comma"},"search":{"maximum":100,"type":"string","description":"Search owned tokens and their collections. Possible criteria for search: token name and id within the contract/collection, collection name, blockchain descriptor and name."}},"required":[]}}}],"output":{},"description":"List all owned tokens (paginated).\n\nReturns all tokens and their data in your workspace.\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n"},{"method":"put","path":"/nfts/ownership/tokens","name":"nfts_ownership_tokens_put","parameters":[{"type":"object","properties":{"query":{"type":"object","properties":{"vaultAccountId":{"type":"string","description":"Vault account filter"}},"required":["vaultAccountId"]}}}],"description":"Refresh vault account tokens.\n\nUpdates all tokens and balances per blockchain and vault account.\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n"},{"method":"get","path":"/nfts/ownership/collections","name":"nfts_ownership_collections_get","parameters":[{"type":"object","properties":{"query":{"type":"object","properties":{"search":{"maximum":100,"type":"string","description":"Search owned collections. Possible criteria for search: collection name, collection contract address."},"pageCursor":{"type":"string","description":"Page cursor to fetch"},"pageSize":{"minimum":1,"maximum":100,"type":"number","description":"Items per page (max 100)"},"sort":{"type":"array","items":{"type":"string","enum":["name"]},"description":"Sort by param, it can be one param or a list of params separated by comma"}},"required":[]}}}],"output":{},"description":"List owned collections (paginated).\n\nReturns all collections in your workspace\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n"},{"method":"get","path":"/nfts/tokens/{id}","name":"nfts_tokens_getById","parameters":[{"type":"object","properties":{"id":{"type":"string","description":"NFT ID"}}}],"output":{"type":"object","properties":{"id":{"type":"string","description":"The Fireblocks NFT asset id"},"tokenId":{"type":"string","description":"Token id within the contract/collection"},"standard":{"type":"string","description":"ERC721 / ERC1155"},"metadataURI":{"type":"string","description":"URL of the original token JSON metadata"},"cachedMetadataURI":{"type":"string","description":"URL of the cached token JSON metadata"},"media":{"description":"Media items extracted from metadata JSON","type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"Cached accessible URL"},"contentType":{"type":"string","enum":["IMAGE","VIDEO","ANIMATION","THREE_D","TEXT","GIF","UNKNOWN_TYPE","SVG","AUDIO"],"description":"Media type"}},"required":["url","contentType"]}},"collection":{"description":"Parent collection information","type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"}}},"blockchainDescriptor":{"type":"string","enum":["ETH","ETH_TEST3","POLYGON","POLYGON_TEST_MUMBAI"]},"description":{"type":"string"},"name":{"type":"string"}},"required":["id","tokenId","standard","media","blockchainDescriptor","description","name"]},"description":"List token data by ID.\n\nReturns the requested token data.\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n"},{"method":"put","path":"/nfts/tokens/{id}","name":"nfts_tokens_putById","parameters":[{"type":"object","properties":{"id":{"type":"string","description":"NFT ID"}}}],"description":"Refresh token metadata.\n\nUpdates the latest token metadata.\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n"},{"method":"get","path":"/nfts/tokens","name":"nfts_tokens_get","parameters":[{"type":"object","properties":{"query":{"type":"object","properties":{"ids":{"type":"string","description":"A comma separated list of NFT IDs. Up to 100 are allowed in a single request."},"pageCursor":{"type":"string","description":"Page cursor to fetch"},"pageSize":{"minimum":1,"maximum":100,"type":"number","description":"Items per page (max 100)"},"sort":{"type":"array","items":{"type":"string","enum":["collection.name","name","blockchainDescriptor"]},"description":"Sort by param, it can be one param or a list of params separated by comma"}},"required":["ids"]}}}],"output":{},"description":"List tokens by IDs.\n\nReturns the requested tokens data\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n"},{"method":"put","path":"/nfts/ownership/tokens/{id}/status","name":"nfts_ownership_tokens_status_putById","parameters":[{"type":"object","properties":{"id":{"type":"string","description":"NFT ID"},"body":{"type":"object","properties":{"status":{"type":"string","enum":["LISTED","ARCHIVED"]}},"required":["status"]}}}],"description":"Update token ownership status.\n\nUpdates token ownership status for a tenant, in all tenant vaults.\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n"},{"method":"get","path":"/connections","name":"connections_get","parameters":[{"type":"object","properties":{"query":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"vaultAccountId":{"type":"number"},"connectionMethod":{"type":"string"},"feeLevel":{"type":"string"},"appUrl":{"type":"string"},"appName":{"type":"string"},"pageSize":{"type":"number","default":10,"maximum":50,"description":"Amount of results to return in the next page."},"next":{"type":"string","description":"Cursor to the next page"}},"required":[]}}}],"output":{"type":"object","properties":{"data":{"description":"Array with the requested Web3 connection's data","type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Id of the connection","example":"4e9e7051-f3b2-48e9-8ee6-b12492552657"},"userId":{"type":"string","description":"Id of the user that created the connection"},"sessionMetadata":{"description":"Metadata of the connection (provided by the dapp)","type":"object","properties":{"appUrl":{"type":"string"},"appName":{"type":"string"},"appDescription":{"type":"string"},"appIcon":{"type":"string"}}},"vaultAccountId":{"type":"number","description":"The vault to connect","example":1},"feeLevel":{"type":"string","enum":["MEDIUM","HIGH"],"description":"The default fee level"},"chainIds":{"description":"The chains approved for the connection","example":["ETH","ETH_TEST","SOL"],"type":"array","items":{"type":"string"}},"connectionType":{"type":"string","enum":["WalletConnect"],"description":"The connection's type"},"connectionMethod":{"type":"string","enum":["DESKTOP","MOBILE","API"],"description":"The method through which the connection was established"},"creationDate":{"format":"date-time","type":"string","description":"Timestamp of the session's creation"}},"required":["id","userId","sessionMetadata","vaultAccountId","feeLevel","chainIds","connectionType","connectionMethod","creationDate"]}},"paging":{"type":"object","properties":{"next":{"type":"string","description":"Cursor to the next page"}},"required":["next"]}},"required":["data"]},"description":"List all open Web3 connections.\n\nGet open Web3 connections."},{"method":"post","path":"/connections/wc","name":"connections_wc_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"vaultAccountId":{"type":"number","description":"The ID of the vault to connect to the Web3 connection.","example":1},"feeLevel":{"type":"string","enum":["MEDIUM","HIGH"],"description":"The default fee level. Valid values are `MEDIUM` and `HIGH`."},"uri":{"type":"string","description":"The WalletConnect uri provided by the dapp.","example":"wc:77752975-906f-48f5-b59f-047826ee947e@1?bridge=https%3A%2F%2F0.bridge.walletconnect.org&key=64be99adc6086b7a729b0ec8c7e1f174927ab92e84f5c6f9527050225344a637"},"chainIds":{"description":"The ID of the blockchain network used in the Web3 connection.","example":["ETH","ETH_TEST"],"type":"array","items":{"type":"string"}}},"required":["vaultAccountId","feeLevel","uri","chainIds"]}}}],"output":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the Web3 connection initiated.","example":"4e9e7051-f3b2-48e9-8ee6-b12492552657"},"sessionMetadata":{"description":"Metadata of the Web3 connection (provided by the DApp).","type":"object","properties":{"appUrl":{"type":"string"},"appName":{"type":"string"},"appDescription":{"type":"string"},"appIcon":{"type":"string"}}}},"required":["id","sessionMetadata"]},"description":"Create a new Web3 connection.\n\nInitiate a new Web3 connection.\n\n* Note: After this succeeds, make a request to `PUT /v1/connections/wc/{id}` (below) to approve or reject the new Web3 connection."},{"method":"put","path":"/connections/wc/{id}","name":"connections_wc_putById","parameters":[{"type":"object","properties":{"id":{"type":"string","description":"The ID of the initiated Web3 connection to approve."},"body":{"type":"object","properties":{"approve":{"type":"boolean","description":"Approval of the initiated Web3 connection."}},"required":["approve"]}}}],"description":"Respond to a pending Web3 connection request.\n\nSubmit a response to *approve* or *reject* an initiated Web3 connection.\n* Note: This call is used to complete your `POST /v1/connections/wc/` request.\n\nAfter this succeeds, your new Web3 connection is created and functioning."},{"method":"delete","path":"/connections/wc/{id}","name":"connections_wc_eraseById","parameters":[{"type":"object","properties":{"id":{"type":"string","description":"The ID of the existing Web3 connection to remove."}}}],"description":"Remove an existing Web3 connection.\n\nRemove a Web3 connection"},{"method":"post","path":"/screening/travel_rule/transaction/validate","name":"screening_travel_rule_transaction_validate_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"transactionAsset":{"type":"string","example":"BTC","description":"Transaction asset symbol BTC,ETH)"},"destination":{"type":"string","example":"bc1qxy2kgdygjrsqtzq2n0yrf1234p83kkfjhx0wlh","description":"Transaction destination address"},"transactionAmount":{"type":"string","example":"10","description":"Transaction amount in the transaction asset"},"originatorVASPdid":{"type":"string","example":"did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2","description":"This is the identifier assigned to your VASP"},"originatorEqualsBeneficiary":{"type":"boolean","description":"\"True\" if the originator and beneficiary is the same person and you therefore do not need to collect any information. \"False\" if it is a third-party transfer."},"travelRuleBehavior":{"type":"boolean","description":"This will also check if the transaction is a TRAVEL_RULE in the beneficiary VASP's jurisdiction"},"beneficiaryVASPdid":{"type":"string","example":"did:ethr:0x46a7ed5813ce735387df2bfb245bd7722e0de992","description":"This is the identifier assigned to the VASP the funds are being sent to"},"beneficiaryVASPname":{"type":"string","example":"HelloCrypto","description":"Beneficiary VASP name"},"beneficiaryName":{"type":"string","example":"John Doe","description":"Beneficiary name"},"beneficiaryAccountNumber":{"type":"string","example":"1234-1234-1234-12234","description":"Beneficiary name"},"beneficiaryAddress":{"example":"{\"addressLine: [Wayne Manor, Gotham City, New York, USA]\"}","description":"Beneficiary name","type":"object","properties":{"street":{"type":"string","example":"1234 Example St","description":"Street address"},"city":{"type":"string","example":"New York","description":"City"},"state":{"type":"string","example":"NY","description":"State or province"},"postalCode":{"type":"string","example":"10001","description":"Postal or ZIP code"}}}},"required":["transactionAsset","destination","transactionAmount","originatorVASPdid","originatorEqualsBeneficiary","travelRuleBehavior","beneficiaryVASPdid","beneficiaryVASPname","beneficiaryName","beneficiaryAccountNumber","beneficiaryAddress"]}}}],"output":{"type":"object","properties":{"isValid":{"type":"boolean","description":"\"isValid\" will tell you if you have collected all the information needed for the travel rule data transfer. Once this field = \"true\", you can move on to the next step which is to transfer the front-end information to your back-end and perform Travel Rule Transaction create"},"type":{"type":"string","description":"\"type\" will tell you if the virtual asset value converted to FIAT value of the withdrawal request is above (=TRAVELRULE) or below (=BELOW_THRESHOLD) the threshold in your jurisdiction. If it is to an unhosted wallet which does not require travel rule information to be sent and only collected, it will say NON_CUSTODIAL.","example":"TRAVELRULE"},"beneficiaryAddressType":{"type":"string","description":"\"beneficiaryAddressType\" will tell you if your blockchain analytics provider or internal address book has been able to identify the wallet address.","example":"UNKNOWN"},"addressSource":{"type":"string","description":"\"addressSource\" will tell you if the address was found in your internal address book or identified by the blockchain analytics provider.","example":"UNKNOWN"},"beneficiaryVASPdid":{"type":"string","description":"The VASP DID of the beneficiary VASP","example":"did:ethr:0x46a7ed5813ce735387df2bfb245bd7722e0de992"},"beneficiaryVASPname":{"type":"string","description":"\"beneficiaryVASPname\" will tell you the name of the VASP that has been identified as the owner of the wallet address. This name is used in a subsequent call to get its DID.","example":"Fireblocks"},"warnings":{"description":"\"errors/warnings\" will tell you what information about the beneficiary you need to collect from the sender.","example":["optional-beneficiaryAccountNumber"],"type":"array","items":{"type":"string"}}},"required":["isValid","type","beneficiaryAddressType","addressSource","beneficiaryVASPdid","beneficiaryVASPname","warnings"]},"description":"Validate Travel Rule Transaction.\n\nValidate Travel Rule transactions.\n\nChecks what beneficiary VASP details are required by your jurisdiction and the beneficiary's jurisdiction.\n\n**Note:** The reference content in this section documents the Travel Rule beta endpoint. The beta endpoint includes APIs that are currently in preview and aren't yet generally available.\n\nTo enroll in the beta and enable this endpoint, contact your Fireblocks Customer Success Manager or send an email to [CSM@fireblocks.com](mailto:CSM@fireblocks.com)."},{"method":"post","path":"/screening/travel_rule/transaction/validate/full","name":"screening_travel_rule_transaction_validate_full_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"transactionAsset":{"type":"string","description":"The asset involved in the transaction"},"transactionAmount":{"type":"string","description":"The amount of the transaction"},"originatorDid":{"type":"string","description":"The DID of the transaction originator"},"beneficiaryDid":{"type":"string","description":"The DID of the transaction beneficiary"},"originatorVASPdid":{"type":"string","description":"The VASP ID of the transaction originator"},"beneficiaryVASPdid":{"type":"string","description":"The VASP ID of the transaction beneficiary"},"beneficiaryVASPname":{"type":"string","description":"The name of the VASP acting as the beneficiary"},"transactionBlockchainInfo":{"description":"Information about the blockchain transaction","type":"object","properties":{"txHash":{"type":"string"},"origin":{"type":"string"},"destination":{"type":"string"}}},"originator":{"description":"Information about the originator of the transaction","type":"object","properties":{"fullName":{"type":"string"},"dateOfBirth":{"type":"string"},"placeOfBirth":{"type":"string"},"address":{"type":"string"},"identificationNumber":{"type":"string"},"nationality":{"type":"string"},"countryOfResidence":{"type":"string"},"taxIdentificationNumber":{"type":"string"},"customerNumber":{"type":"string"}}},"beneficiary":{"description":"Information about the beneficiary of the transaction","type":"object","properties":{"fullName":{"type":"string"},"dateOfBirth":{"type":"string"},"placeOfBirth":{"type":"string"},"address":{"type":"string"},"identificationNumber":{"type":"string"},"nationality":{"type":"string"},"countryOfResidence":{"type":"string"},"taxIdentificationNumber":{"type":"string"},"customerNumber":{"type":"string"}}},"encrypted":{"type":"string","description":"Encrypted data related to the transaction"},"protocol":{"type":"string","description":"The protocol used to perform the travel rule"},"notificationEmail":{"type":"string","description":"The email address where a notification should be sent upon completion of the travel rule"},"skipBeneficiaryDataValidation":{"type":"boolean","description":"Whether to skip validation of beneficiary data"},"travelRuleBehavior":{"type":"boolean","description":"Whether to check if the transaction is a TRAVEL_RULE in the beneficiary VASP's jurisdiction"},"originatorProof":{"description":"Ownership proof related to the originator of the transaction","type":"object","properties":{"type":{"type":"string","example":"passport","description":"Type of ownership proof"},"id":{"type":"string","example":"123456789","description":"Identification number"},"name":{"type":"string","example":"Alice","description":"Name of owner"},"country":{"type":"string","example":"US","description":"Country of issuance"},"issueDate":{"type":"string","example":"2022-01-01","description":"Date of issuance"},"issuer":{"type":"string","example":"US Government","description":"Name of issuing entity"}}},"beneficiaryProof":{"description":"Ownership proof related to the beneficiary of the transaction","type":"object","properties":{"type":{"type":"string","example":"passport","description":"Type of ownership proof"},"id":{"type":"string","example":"123456789","description":"Identification number"},"name":{"type":"string","example":"Alice","description":"Name of owner"},"country":{"type":"string","example":"US","description":"Country of issuance"},"issueDate":{"type":"string","example":"2022-01-01","description":"Date of issuance"},"issuer":{"type":"string","example":"US Government","description":"Name of issuing entity"}}},"pii":{"description":"Personal identifiable information related to the transaction","type":"object","properties":{"fullName":{"type":"string"},"dateOfBirth":{"type":"string"},"placeOfBirth":{"type":"string"},"address":{"type":"string"},"identificationNumber":{"type":"string"},"nationality":{"type":"string"},"countryOfResidence":{"type":"string"},"taxIdentificationNumber":{"type":"string"},"customerNumber":{"type":"string"}}}},"required":["transactionAsset","transactionAmount","originatorDid","beneficiaryDid","originatorVASPdid","beneficiaryVASPdid","beneficiaryVASPname","transactionBlockchainInfo","originator","beneficiary","encrypted","protocol","notificationEmail","skipBeneficiaryDataValidation","travelRuleBehavior","originatorProof","beneficiaryProof","pii"]}}}],"output":{"type":"object","properties":{"isValid":{"type":"boolean","description":"\"isValid\" will tell you if you have collected all the information needed for the travel rule data transfer. Once this field = \"true\", you can move on to the next step which is to transfer the front-end information to your back-end and perform Travel Rule Transaction create"},"type":{"type":"string","description":"\"type\" will tell you if the virtual asset value converted to FIAT value of the withdrawal request is above (=TRAVELRULE) or below (=BELOW_THRESHOLD) the threshold in your jurisdiction. If it is to an unhosted wallet which does not require travel rule information to be sent and only collected, it will say NON_CUSTODIAL.","example":"TRAVELRULE"},"beneficiaryAddressType":{"type":"string","description":"\"beneficiaryAddressType\" will tell you if your blockchain analytics provider or internal address book has been able to identify the wallet address.","example":"UNKNOWN"},"addressSource":{"type":"string","description":"\"addressSource\" will tell you if the address was found in your internal address book or identified by the blockchain analytics provider.","example":"UNKNOWN"},"beneficiaryVASPdid":{"type":"string","description":"The VASP DID of the beneficiary VASP","example":"did:ethr:0x46a7ed5813ce735387df2bfb245bd7722e0de992"},"beneficiaryVASPname":{"type":"string","description":"\"beneficiaryVASPname\" will tell you the name of the VASP that has been identified as the owner of the wallet address. This name is used in a subsequent call to get its DID.","example":"Fireblocks"},"warnings":{"description":"\"errors/warnings\" will tell you what information about the beneficiary you need to collect from the sender.","example":["optional-beneficiaryAccountNumber"],"type":"array","items":{"type":"string"}}},"required":["isValid","type","beneficiaryAddressType","addressSource","beneficiaryVASPdid","beneficiaryVASPname","warnings"]},"description":"Validate Full Travel Rule Transaction.\n\nValidate Full Travel Rule transactions.\n\nChecks for all required information on the originator and beneficiary VASPs.\n\n**Note:** The reference content in this section documents the Travel Rule beta endpoint. The beta endpoint includes APIs that are currently in preview and aren't yet generally available.\n\nTo enroll in the beta and enable this endpoint, contact your Fireblocks Customer Success Manager or send an email to [CSM@fireblocks.com](mailto:CSM@fireblocks.com)."},{"method":"get","path":"/screening/travel_rule/vasp/{did}","name":"screening_travel_rule_vasp_getByDid","parameters":[{"type":"object","properties":{"did":{"type":"string"},"query":{"type":"object","properties":{"order":{"type":"string","description":"Field to order by"},"per_page":{"type":"number","description":"Records per page"},"page":{"type":"number","description":"Page number"},"fields":{"type":"string","description":"CSV of fields to return (all, \"blank\" or see list of all field names below)"}},"required":[]}}}],"output":{"type":"object","properties":{"did":{"type":"string"},"name":{"type":"string"},"verificationStatus":{"type":"string"},"addressLine1":{"type":"string"},"addressLine2":{"type":"string"},"city":{"type":"string"},"country":{"type":"string"},"emailDomains":{"type":"string"},"website":{"type":"string"},"logo":{"type":"string"},"legalStructure":{"type":"string"},"legalName":{"type":"string"},"yearFounded":{"type":"string"},"incorporationCountry":{"type":"string"},"isRegulated":{"type":"string"},"otherNames":{"type":"string"},"identificationType":{"type":"string"},"identificationCountry":{"type":"string"},"businessNumber":{"type":"string"},"regulatoryAuthorities":{"type":"string"},"jurisdictions":{"type":"string"},"street":{"type":"string"},"number":{"type":"string"},"unit":{"type":"string"},"postCode":{"type":"string"},"state":{"type":"string"},"certificates":{"type":"string"},"description":{"type":"string"},"travelRule_OPENVASP":{"type":"string"},"travelRule_SYGNA":{"type":"string"},"travelRule_TRISA":{"type":"string"},"travelRule_TRLIGHT":{"type":"string"},"travelRule_EMAIL":{"type":"string"},"travelRule_TRP":{"type":"string"},"travelRule_SHYFT":{"type":"string"},"travelRule_USTRAVELRULEWG":{"type":"string"},"createdAt":{"type":"string"},"createdBy":{"type":"string"},"updatedAt":{"type":"string"},"updatedBy":{"type":"string"},"lastSentDate":{"type":"string"},"lastReceivedDate":{"type":"string"},"documents":{"type":"string"},"hasAdmin":{"type":"boolean"},"isNotifiable":{"type":"boolean"},"issuers":{"type":"object","properties":{"yearFounded":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"isRegulated":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"regulatoryAuthorities":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"name":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"logo":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"website":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"legalName":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"legalStructure":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"incorporationCountry":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"businessNumber":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"addressLine1":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"city":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"country":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"description":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]}},"required":["yearFounded","isRegulated","regulatoryAuthorities","name","logo","website","legalName","legalStructure","incorporationCountry","businessNumber","addressLine1","city","country","description"]}},"required":["did","name","verificationStatus","addressLine1","addressLine2","city","country","emailDomains","website","logo","legalStructure","legalName","yearFounded","incorporationCountry","isRegulated","otherNames","identificationType","identificationCountry","businessNumber","regulatoryAuthorities","jurisdictions","street","number","unit","postCode","state","certificates","description","travelRule_OPENVASP","travelRule_SYGNA","travelRule_TRISA","travelRule_TRLIGHT","travelRule_EMAIL","travelRule_TRP","travelRule_SHYFT","travelRule_USTRAVELRULEWG","createdAt","createdBy","updatedAt","updatedBy","lastSentDate","lastReceivedDate","documents","hasAdmin","isNotifiable","issuers"]},"description":"Get VASP details.\n\nGet VASP Details.\n\nReturns information about a VASP that has the specified DID.\n\n**Note:** The reference content in this section documents the Travel Rule beta endpoint. The beta endpoint includes APIs that are currently in preview and aren't yet generally available.\n\nTo enroll in the beta and enable this endpoint, contact your Fireblocks Customer Success Manager or send an email to [CSM@fireblocks.com](mailto:CSM@fireblocks.com)."},{"method":"get","path":"/screening/travel_rule/vasp","name":"screening_travel_rule_vasp_get","parameters":[{"type":"object","properties":{"query":{"type":"object","properties":{"order":{"type":"string","description":"Field to order by"},"per_page":{"type":"number","description":"Records per page"},"page":{"type":"number","description":"Page number"},"fields":{"type":"string","description":"CSV of fields to return (all, \"blank\" or see list of all field names below)"}},"required":[]}}}],"output":{"type":"object","properties":{"vasps":{"type":"array","items":{"type":"object","properties":{"did":{"type":"string"},"name":{"type":"string"},"verificationStatus":{"type":"string"},"addressLine1":{"type":"string"},"addressLine2":{"type":"string"},"city":{"type":"string"},"country":{"type":"string"},"emailDomains":{"type":"string"},"website":{"type":"string"},"logo":{"type":"string"},"legalStructure":{"type":"string"},"legalName":{"type":"string"},"yearFounded":{"type":"string"},"incorporationCountry":{"type":"string"},"isRegulated":{"type":"string"},"otherNames":{"type":"string"},"identificationType":{"type":"string"},"identificationCountry":{"type":"string"},"businessNumber":{"type":"string"},"regulatoryAuthorities":{"type":"string"},"jurisdictions":{"type":"string"},"street":{"type":"string"},"number":{"type":"string"},"unit":{"type":"string"},"postCode":{"type":"string"},"state":{"type":"string"},"certificates":{"type":"string"},"description":{"type":"string"},"travelRule_OPENVASP":{"type":"string"},"travelRule_SYGNA":{"type":"string"},"travelRule_TRISA":{"type":"string"},"travelRule_TRLIGHT":{"type":"string"},"travelRule_EMAIL":{"type":"string"},"travelRule_TRP":{"type":"string"},"travelRule_SHYFT":{"type":"string"},"travelRule_USTRAVELRULEWG":{"type":"string"},"createdAt":{"type":"string"},"createdBy":{"type":"string"},"updatedAt":{"type":"string"},"updatedBy":{"type":"string"},"lastSentDate":{"type":"string"},"lastReceivedDate":{"type":"string"},"documents":{"type":"string"},"hasAdmin":{"type":"boolean"},"isNotifiable":{"type":"boolean"},"issuers":{"type":"object","properties":{"yearFounded":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"isRegulated":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"regulatoryAuthorities":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"name":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"logo":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"website":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"legalName":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"legalStructure":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"incorporationCountry":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"businessNumber":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"addressLine1":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"city":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"country":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"description":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]}},"required":["yearFounded","isRegulated","regulatoryAuthorities","name","logo","website","legalName","legalStructure","incorporationCountry","businessNumber","addressLine1","city","country","description"]}},"required":["did","name","verificationStatus","addressLine1","addressLine2","city","country","emailDomains","website","logo","legalStructure","legalName","yearFounded","incorporationCountry","isRegulated","otherNames","identificationType","identificationCountry","businessNumber","regulatoryAuthorities","jurisdictions","street","number","unit","postCode","state","certificates","description","travelRule_OPENVASP","travelRule_SYGNA","travelRule_TRISA","travelRule_TRLIGHT","travelRule_EMAIL","travelRule_TRP","travelRule_SHYFT","travelRule_USTRAVELRULEWG","createdAt","createdBy","updatedAt","updatedBy","lastSentDate","lastReceivedDate","documents","hasAdmin","isNotifiable","issuers"]}}},"required":["vasps"]},"description":"Get All VASPs.\n\nReturns a list of VASPs. VASPs can be searched and sorted and results are paginated.\n\n**Note:** The reference content in this section documents the Travel Rule beta endpoint. The beta endpoint includes APIs that are currently in preview and aren't yet generally available.\n\nTo enroll in the beta and enable this endpoint, contact your Fireblocks Customer Success Manager or send an email to [CSM@fireblocks.com](mailto:CSM@fireblocks.com)."},{"method":"put","path":"/screeening/travel_rule/vasp/update","name":"screeening_travel_rule_vasp_update_put","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"did":{"type":"string","example":"did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2","description":"The decentralized identifier of the VASP"},"pii_didkey":{"type":"string","example":"did:key:z6Mks5CZRaiooKYhq5TwtXQC1gWhwiZnmiKfFrMnYY62MhYf","description":"The PII DID key of the VASP"}},"required":["did","pii_didkey"]}}}],"output":{"type":"object","properties":{"did":{"type":"string","example":"did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2","description":"The decentralized identifier of the VASP"},"pii_didkey":{"type":"string","example":"did:key:z6Mks5CZRaiooKYhq5TwtXQC1gWhwiZnmiKfFrMnYY62MhYf","description":"The PII DID key of the VASP"}},"required":["did","pii_didkey"]},"description":"Add jsonDidKey to VASP details.\n\nUpdate VASP Details.\n\nUpdates a VASP with the provided parameters. Use this endpoint to add your public jsonDIDkey generated by Notabene.\n\n**Note:** The reference content in this section documents the Travel Rule beta endpoint. The beta endpoint includes APIs that are currently in preview and aren't yet generally available.\n\nTo enroll in the beta and enable this endpoint, contact your Fireblocks Customer Success Manager or send an email to [CSM@fireblocks.com](mailto:CSM@fireblocks.com)."},{"method":"get","path":"/tap/active_policy","name":"tap_active_policy_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"object","description":"Policy validation","properties":{"policy":{"type":"object","description":"Response object for policy operations","properties":{"rules":{"type":"array","description":"A set of policy rules","items":{"type":"object","description":"Policy rule which is enforced on transactions","properties":{"operator":{"type":"string","description":"(deprecated - replaced by \"operators\") | Defines users who can initiate the type of transaction to which the rule applies. options are * \"*\" - All users are allowed * Specific User id","deprecated":true},"operators":{"type":"object","description":"Defines users/groups who can initiate the type of transaction to which the rule applies.","properties":{"wildcard":{"type":"string","enum":["*"],"description":"If used then this property should appear as the only child property\n* \"*\" - All users are allowed\n"},"users":{"type":"array","description":"Set of users ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Set of group ids","items":{"type":"string"}},"services":{"type":"array","description":"set of services to initiate transactions","items":{"type":"string"}}}},"transactionType":{"type":"string","enum":["TRANSFER","CONTRACT_CALL","APPROVE","MINT","BURN","SUPPLY","REDEEM","STAKE","RAW","TYPED_MESSAGE"],"description":"Defines the type of transaction to which the rule applies.\n * TRANSFER - Default. Transfers funds from one account to another\n * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.\n * APPROVE - Allows a smart contract to withdraw from a designated wallet.\n * MINT - Perform a mint operation (increase supply) on a supported token\n * BURN - Perform a burn operation (reduce supply) on a supported token\n * SUPPLY - Use for DeFi to lend assets\n * REDEEM - Use for DeFi to get lending back\n * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.\n * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.\n * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.\n"},"designatedSigner":{"type":"string","description":"(deprecated - replaced by \"designatedSigners\") Id representing the user who signs transactions that match a specific rule","deprecated":true},"designatedSigners":{"type":"object","description":"Set of ids representing the users who signs transactions that match a specific rule","properties":{"users":{"type":"array","description":"Set of users ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Set of group ids","items":{"type":"string"}}}},"type":{"type":"string","enum":["TRANSFER"],"description":"Policy rule type"},"action":{"type":"string","enum":["ALLOW","BLOCK","2-TIER"],"description":"Defines what occurs when a transaction meets the rule's criteria\n* ALLOW - The transaction goes through and can be signed without requiring additional approvals\n* BLOCK - The transaction is automatically blocked\n* 2-TIER - Only these users or user groups can approve \n If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through\n The list of entities are set is \"authorizationGroups\" field\n"},"asset":{"type":"string","description":"Defines the type of asset being transacted, options are\n* \"*\" - All assets\n* Specific asset\n"},"srcType":{"description":"(deprecated - replaced by \"src\") source account type"},"srcSubType":{"description":"(deprecated - replaced by \"src\") source sub account type"},"srcId":{"description":"(deprecated - replaced by \"src\") source account id"},"src":{"type":"object","description":"Defines source accounts the rule allows transfers to originate from","properties":{"ids":{"type":"array","description":"A set of ids","items":{"type":"array","description":"A set of ids in a tuple format","items":{"type":"string"},"minItems":1,"maxItems":3}}}},"dstType":{"description":"(deprecated - replaced by \"dst\") destination account type"},"dstSubType":{"description":"(deprecated - replaced by \"dst\") destination sub account type"},"dstId":{"description":"(deprecated - replaced by \"dst\") destination account id"},"dst":{"type":"object","description":"Defines the destination accounts the rule allows transfers to","properties":{"ids":{"type":"array","description":"A set of ids","items":{"type":"array","description":"A set of ids in a tuple format","items":{"type":"string"},"minItems":1,"maxItems":3}}}},"dstAddressType":{"type":"string","enum":["WHITELISTED","ONE_TIME","*"],"description":"Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.\nBy default, you can only transfer to an external address after it’s whitelisted.\n * WHITELISTED - Can only be sent to whitelisted addresses.\n * ONE_TIME - Can only be sent to non-whitelisted external addresses.\n * \"*\" - can be sent to whitelisted addresses or non-whitelisted external\n"},"amountCurrency":{"type":"string","enum":["USD","EUR","NATIVE"],"description":"* USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.\n* EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.\n* NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.\n"},"amountScope":{"type":"string","enum":["SINGLE_TX","TIMEFRAME"],"description":"* SINGLE_TX - limit applies to a single transaction\n* TIMEFRAME - limit applies to all transactions within the defined time period\n"},"amount":{"type":"number","description":"Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)"},"periodSec":{"type":"number","description":"Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.\nWhen the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.\n"},"authorizers":{"type":"array","description":"(deprecated - replaced by \"authorizationGroups\") Allowed entities which can approves a transaction","deprecated":true,"items":{"type":"string"}},"authorizersCount":{"type":"number","description":"(deprecated - replaced by \"authorizationGroups\") Min amount of entities which are needed to approve a transaction","deprecated":true},"authorizationGroups":{"type":"object","description":"Defines the transaction approval terms","properties":{"logic":{"type":"string","enum":["AND","OR"],"description":"* AND - requires approval of all authorization groups\n* OR - requires approval of at least one of the authorization groups\n"},"allowOperatorAsAuthorizer":{"type":"boolean","description":"Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction"},"groups":{"type":"array","description":"Groups of entities which can approve the transaction","items":{"type":"object","properties":{"users":{"type":"array","description":"User ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Group ids","items":{"type":"string"}},"th":{"type":"number","description":"Represents the min amount of entities which are required to approve the transaction, default is 1."}}}}}},"amountAggregation":{"type":"object","description":"Defines the method by which the Policy Engine calculates accumulation.\nIt uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.\n","properties":{"operators":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"},"srcTransferPeers":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"},"dstTransferPeers":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"}}},"rawMessageSigning":{"type":"object","description":"Raw message signing configuration","properties":{"algorithm":{"type":"string"},"derivationPath":{"type":"object","properties":{"path":{"type":"array","items":{"type":"number"}}}}}},"applyForApprove":{"type":"boolean","description":"Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)"},"applyForTypedMessage":{"type":"boolean","description":"Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)"},"externalDescriptor":{"type":"string","description":"A unique id identifying the rule"}},"required":["type","action","asset","amountCurrency","amountScope","amount","periodSec","externalDescriptor"]}},"metadata":{"type":"object","description":"Policy related metadata","properties":{"editedBy":{"type":"string","description":"The user id of the user who last edited the policy"},"editedAt":{"type":"string","description":"The timestamp of the last edit of the policy"},"publishedBy":{"type":"string","description":"The user id of the user who last published the policy"},"publishedAt":{"type":"string","description":"The timestamp of the last publish of the policy"}}}},"required":["rules","metadata"]},"validation":{"type":"object","description":"Policy validation object","properties":{"status":{"type":"string","description":"Validation status"},"checkResult":{"type":"object","description":"Policy rules validation result","properties":{"errors":{"type":"number","description":"Number of errors"},"result":{"type":"array","description":"A set of validation results","items":{"type":"object","description":"The rule validation result","properties":{"index":{"type":"number","description":"Rule index number in the policy"},"status":{"type":"string","enum":["ok","failure"],"description":"Validation status"},"errors":{"type":"array","description":"A set of rule validation error objects","items":{"type":"object","description":"Rule validation result error","properties":{"errorMessage":{"type":"string","description":"Error message"},"errorCode":{"type":"number","description":"error code"},"errorCodeName":{"type":"string","description":"error code name"},"errorField":{"type":"string","enum":["operator","operators","authorizationGroups","designatedSigner","designatedSigners","contractMethods","amountAggregation","src","dst"],"description":"The field which the error relates to\n* operator - transaction initiator\n* operators - transaction initiators\n* authorizationGroups - transaction authorizer groups\n* designatedSigner - transaction signer\n* designatedSigners - transaction signers\n* contractMethods - contract methods\n* amountAggregation - transaction amount aggregation configuration\n* src - transaction source asset configuration\n* dst - transaction destination asset configuration\n"}},"required":["errorMessage","errorCode","errorCodeName","errorField"]}}},"required":["index","status","errors"]}}},"required":["errors","result"]}},"required":["status","checkResult"]}},"required":["policy","validation"]},"description":"Get the active policy and its validation.\n\nReturns the active policy and its validation.
\n**Note:** These endpoints are currently in beta and might be subject to changes.\nIf you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"get","path":"/tap/draft","name":"tap_draft_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"object","description":"Draft validation","properties":{"draftResponse":{"type":"object","description":"Response object for draft operations","properties":{"status":{"type":"string","description":"Operation status"},"rules":{"type":"array","description":"Draft rules","items":{"type":"object","description":"Policy rule which is enforced on transactions","properties":{"operator":{"type":"string","description":"(deprecated - replaced by \"operators\") | Defines users who can initiate the type of transaction to which the rule applies. options are * \"*\" - All users are allowed * Specific User id","deprecated":true},"operators":{"type":"object","description":"Defines users/groups who can initiate the type of transaction to which the rule applies.","properties":{"wildcard":{"type":"string","enum":["*"],"description":"If used then this property should appear as the only child property\n* \"*\" - All users are allowed\n"},"users":{"type":"array","description":"Set of users ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Set of group ids","items":{"type":"string"}},"services":{"type":"array","description":"set of services to initiate transactions","items":{"type":"string"}}}},"transactionType":{"type":"string","enum":["TRANSFER","CONTRACT_CALL","APPROVE","MINT","BURN","SUPPLY","REDEEM","STAKE","RAW","TYPED_MESSAGE"],"description":"Defines the type of transaction to which the rule applies.\n * TRANSFER - Default. Transfers funds from one account to another\n * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.\n * APPROVE - Allows a smart contract to withdraw from a designated wallet.\n * MINT - Perform a mint operation (increase supply) on a supported token\n * BURN - Perform a burn operation (reduce supply) on a supported token\n * SUPPLY - Use for DeFi to lend assets\n * REDEEM - Use for DeFi to get lending back\n * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.\n * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.\n * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.\n"},"designatedSigner":{"type":"string","description":"(deprecated - replaced by \"designatedSigners\") Id representing the user who signs transactions that match a specific rule","deprecated":true},"designatedSigners":{"type":"object","description":"Set of ids representing the users who signs transactions that match a specific rule","properties":{"users":{"type":"array","description":"Set of users ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Set of group ids","items":{"type":"string"}}}},"type":{"type":"string","enum":["TRANSFER"],"description":"Policy rule type"},"action":{"type":"string","enum":["ALLOW","BLOCK","2-TIER"],"description":"Defines what occurs when a transaction meets the rule's criteria\n* ALLOW - The transaction goes through and can be signed without requiring additional approvals\n* BLOCK - The transaction is automatically blocked\n* 2-TIER - Only these users or user groups can approve \n If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through\n The list of entities are set is \"authorizationGroups\" field\n"},"asset":{"type":"string","description":"Defines the type of asset being transacted, options are\n* \"*\" - All assets\n* Specific asset\n"},"srcType":{"description":"(deprecated - replaced by \"src\") source account type"},"srcSubType":{"description":"(deprecated - replaced by \"src\") source sub account type"},"srcId":{"description":"(deprecated - replaced by \"src\") source account id"},"src":{"type":"object","description":"Defines source accounts the rule allows transfers to originate from","properties":{"ids":{"type":"array","description":"A set of ids","items":{"type":"array","description":"A set of ids in a tuple format","items":{"type":"string"},"minItems":1,"maxItems":3}}}},"dstType":{"description":"(deprecated - replaced by \"dst\") destination account type"},"dstSubType":{"description":"(deprecated - replaced by \"dst\") destination sub account type"},"dstId":{"description":"(deprecated - replaced by \"dst\") destination account id"},"dst":{"type":"object","description":"Defines the destination accounts the rule allows transfers to","properties":{"ids":{"type":"array","description":"A set of ids","items":{"type":"array","description":"A set of ids in a tuple format","items":{"type":"string"},"minItems":1,"maxItems":3}}}},"dstAddressType":{"type":"string","enum":["WHITELISTED","ONE_TIME","*"],"description":"Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.\nBy default, you can only transfer to an external address after it’s whitelisted.\n * WHITELISTED - Can only be sent to whitelisted addresses.\n * ONE_TIME - Can only be sent to non-whitelisted external addresses.\n * \"*\" - can be sent to whitelisted addresses or non-whitelisted external\n"},"amountCurrency":{"type":"string","enum":["USD","EUR","NATIVE"],"description":"* USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.\n* EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.\n* NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.\n"},"amountScope":{"type":"string","enum":["SINGLE_TX","TIMEFRAME"],"description":"* SINGLE_TX - limit applies to a single transaction\n* TIMEFRAME - limit applies to all transactions within the defined time period\n"},"amount":{"type":"number","description":"Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)"},"periodSec":{"type":"number","description":"Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.\nWhen the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.\n"},"authorizers":{"type":"array","description":"(deprecated - replaced by \"authorizationGroups\") Allowed entities which can approves a transaction","deprecated":true,"items":{"type":"string"}},"authorizersCount":{"type":"number","description":"(deprecated - replaced by \"authorizationGroups\") Min amount of entities which are needed to approve a transaction","deprecated":true},"authorizationGroups":{"type":"object","description":"Defines the transaction approval terms","properties":{"logic":{"type":"string","enum":["AND","OR"],"description":"* AND - requires approval of all authorization groups\n* OR - requires approval of at least one of the authorization groups\n"},"allowOperatorAsAuthorizer":{"type":"boolean","description":"Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction"},"groups":{"type":"array","description":"Groups of entities which can approve the transaction","items":{"type":"object","properties":{"users":{"type":"array","description":"User ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Group ids","items":{"type":"string"}},"th":{"type":"number","description":"Represents the min amount of entities which are required to approve the transaction, default is 1."}}}}}},"amountAggregation":{"type":"object","description":"Defines the method by which the Policy Engine calculates accumulation.\nIt uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.\n","properties":{"operators":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"},"srcTransferPeers":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"},"dstTransferPeers":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"}}},"rawMessageSigning":{"type":"object","description":"Raw message signing configuration","properties":{"algorithm":{"type":"string"},"derivationPath":{"type":"object","properties":{"path":{"type":"array","items":{"type":"number"}}}}}},"applyForApprove":{"type":"boolean","description":"Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)"},"applyForTypedMessage":{"type":"boolean","description":"Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)"},"externalDescriptor":{"type":"string","description":"A unique id identifying the rule"}},"required":["type","action","asset","amountCurrency","amountScope","amount","periodSec","externalDescriptor"]}},"draftId":{"type":"string","description":"Draft unique id"},"metadata":{"type":"object","description":"Policy related metadata","properties":{"editedBy":{"type":"string","description":"The user id of the user who last edited the policy"},"editedAt":{"type":"string","description":"The timestamp of the last edit of the policy"},"publishedBy":{"type":"string","description":"The user id of the user who last published the policy"},"publishedAt":{"type":"string","description":"The timestamp of the last publish of the policy"}}}},"required":["draftId","status","rules","metadata"]},"validation":{"type":"object","description":"Policy validation object","properties":{"status":{"type":"string","description":"Validation status"},"checkResult":{"type":"object","description":"Policy rules validation result","properties":{"errors":{"type":"number","description":"Number of errors"},"result":{"type":"array","description":"A set of validation results","items":{"type":"object","description":"The rule validation result","properties":{"index":{"type":"number","description":"Rule index number in the policy"},"status":{"type":"string","enum":["ok","failure"],"description":"Validation status"},"errors":{"type":"array","description":"A set of rule validation error objects","items":{"type":"object","description":"Rule validation result error","properties":{"errorMessage":{"type":"string","description":"Error message"},"errorCode":{"type":"number","description":"error code"},"errorCodeName":{"type":"string","description":"error code name"},"errorField":{"type":"string","enum":["operator","operators","authorizationGroups","designatedSigner","designatedSigners","contractMethods","amountAggregation","src","dst"],"description":"The field which the error relates to\n* operator - transaction initiator\n* operators - transaction initiators\n* authorizationGroups - transaction authorizer groups\n* designatedSigner - transaction signer\n* designatedSigners - transaction signers\n* contractMethods - contract methods\n* amountAggregation - transaction amount aggregation configuration\n* src - transaction source asset configuration\n* dst - transaction destination asset configuration\n"}},"required":["errorMessage","errorCode","errorCodeName","errorField"]}}},"required":["index","status","errors"]}}},"required":["errors","result"]}},"required":["status","checkResult"]}},"required":["draftResponse","validation"]},"description":"Get the active draft.\n\nReturns the active draft and its validation.
\n**Note:** These endpoints are currently in beta and might be subject to changes.\nIf you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"post","path":"/tap/draft","name":"tap_draft_post","parameters":[{"type":"object","properties":{"body":{}}}],"output":{"type":"object","description":"Response object of the publish policy operation","properties":{"status":{"type":"string","enum":["SUCCESS","UNVALIDATED","INVALID_CONFIGURATION","PENDING","PENDING_CONSOLE_APPROVAL","AWAITING_QUORUM","UNHANDLED_ERROR"],"description":"* SUCCESS - success\n* UNVALIDATED - not validated yet\n* INVALID_CONFIGURATION - at least one rule is invalid\n* PENDING - pending approval\n* PENDING_CONSOLE_APPROVAL - pending approval from the console app\n* AWAITING_QUORUM - pending quorum approval\n* UNHANDLED_ERROR - unhandled error\n"},"rules":{"type":"array","items":{"type":"object","description":"Policy rule which is enforced on transactions","properties":{"operator":{"type":"string","description":"(deprecated - replaced by \"operators\") | Defines users who can initiate the type of transaction to which the rule applies. options are * \"*\" - All users are allowed * Specific User id","deprecated":true},"operators":{"type":"object","description":"Defines users/groups who can initiate the type of transaction to which the rule applies.","properties":{"wildcard":{"type":"string","enum":["*"],"description":"If used then this property should appear as the only child property\n* \"*\" - All users are allowed\n"},"users":{"type":"array","description":"Set of users ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Set of group ids","items":{"type":"string"}},"services":{"type":"array","description":"set of services to initiate transactions","items":{"type":"string"}}}},"transactionType":{"type":"string","enum":["TRANSFER","CONTRACT_CALL","APPROVE","MINT","BURN","SUPPLY","REDEEM","STAKE","RAW","TYPED_MESSAGE"],"description":"Defines the type of transaction to which the rule applies.\n * TRANSFER - Default. Transfers funds from one account to another\n * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.\n * APPROVE - Allows a smart contract to withdraw from a designated wallet.\n * MINT - Perform a mint operation (increase supply) on a supported token\n * BURN - Perform a burn operation (reduce supply) on a supported token\n * SUPPLY - Use for DeFi to lend assets\n * REDEEM - Use for DeFi to get lending back\n * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.\n * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.\n * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.\n"},"designatedSigner":{"type":"string","description":"(deprecated - replaced by \"designatedSigners\") Id representing the user who signs transactions that match a specific rule","deprecated":true},"designatedSigners":{"type":"object","description":"Set of ids representing the users who signs transactions that match a specific rule","properties":{"users":{"type":"array","description":"Set of users ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Set of group ids","items":{"type":"string"}}}},"type":{"type":"string","enum":["TRANSFER"],"description":"Policy rule type"},"action":{"type":"string","enum":["ALLOW","BLOCK","2-TIER"],"description":"Defines what occurs when a transaction meets the rule's criteria\n* ALLOW - The transaction goes through and can be signed without requiring additional approvals\n* BLOCK - The transaction is automatically blocked\n* 2-TIER - Only these users or user groups can approve \n If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through\n The list of entities are set is \"authorizationGroups\" field\n"},"asset":{"type":"string","description":"Defines the type of asset being transacted, options are\n* \"*\" - All assets\n* Specific asset\n"},"srcType":{"description":"(deprecated - replaced by \"src\") source account type"},"srcSubType":{"description":"(deprecated - replaced by \"src\") source sub account type"},"srcId":{"description":"(deprecated - replaced by \"src\") source account id"},"src":{"type":"object","description":"Defines source accounts the rule allows transfers to originate from","properties":{"ids":{"type":"array","description":"A set of ids","items":{"type":"array","description":"A set of ids in a tuple format","items":{"type":"string"},"minItems":1,"maxItems":3}}}},"dstType":{"description":"(deprecated - replaced by \"dst\") destination account type"},"dstSubType":{"description":"(deprecated - replaced by \"dst\") destination sub account type"},"dstId":{"description":"(deprecated - replaced by \"dst\") destination account id"},"dst":{"type":"object","description":"Defines the destination accounts the rule allows transfers to","properties":{"ids":{"type":"array","description":"A set of ids","items":{"type":"array","description":"A set of ids in a tuple format","items":{"type":"string"},"minItems":1,"maxItems":3}}}},"dstAddressType":{"type":"string","enum":["WHITELISTED","ONE_TIME","*"],"description":"Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.\nBy default, you can only transfer to an external address after it’s whitelisted.\n * WHITELISTED - Can only be sent to whitelisted addresses.\n * ONE_TIME - Can only be sent to non-whitelisted external addresses.\n * \"*\" - can be sent to whitelisted addresses or non-whitelisted external\n"},"amountCurrency":{"type":"string","enum":["USD","EUR","NATIVE"],"description":"* USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.\n* EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.\n* NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.\n"},"amountScope":{"type":"string","enum":["SINGLE_TX","TIMEFRAME"],"description":"* SINGLE_TX - limit applies to a single transaction\n* TIMEFRAME - limit applies to all transactions within the defined time period\n"},"amount":{"type":"number","description":"Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)"},"periodSec":{"type":"number","description":"Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.\nWhen the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.\n"},"authorizers":{"type":"array","description":"(deprecated - replaced by \"authorizationGroups\") Allowed entities which can approves a transaction","deprecated":true,"items":{"type":"string"}},"authorizersCount":{"type":"number","description":"(deprecated - replaced by \"authorizationGroups\") Min amount of entities which are needed to approve a transaction","deprecated":true},"authorizationGroups":{"type":"object","description":"Defines the transaction approval terms","properties":{"logic":{"type":"string","enum":["AND","OR"],"description":"* AND - requires approval of all authorization groups\n* OR - requires approval of at least one of the authorization groups\n"},"allowOperatorAsAuthorizer":{"type":"boolean","description":"Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction"},"groups":{"type":"array","description":"Groups of entities which can approve the transaction","items":{"type":"object","properties":{"users":{"type":"array","description":"User ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Group ids","items":{"type":"string"}},"th":{"type":"number","description":"Represents the min amount of entities which are required to approve the transaction, default is 1."}}}}}},"amountAggregation":{"type":"object","description":"Defines the method by which the Policy Engine calculates accumulation.\nIt uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.\n","properties":{"operators":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"},"srcTransferPeers":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"},"dstTransferPeers":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"}}},"rawMessageSigning":{"type":"object","description":"Raw message signing configuration","properties":{"algorithm":{"type":"string"},"derivationPath":{"type":"object","properties":{"path":{"type":"array","items":{"type":"number"}}}}}},"applyForApprove":{"type":"boolean","description":"Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)"},"applyForTypedMessage":{"type":"boolean","description":"Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)"},"externalDescriptor":{"type":"string","description":"A unique id identifying the rule"}},"required":["type","action","asset","amountCurrency","amountScope","amount","periodSec","externalDescriptor"]}},"checkResult":{"type":"object","description":"Policy rules validation result","properties":{"errors":{"type":"number","description":"Number of errors"},"result":{"type":"array","description":"A set of validation results","items":{"type":"object","description":"The rule validation result","properties":{"index":{"type":"number","description":"Rule index number in the policy"},"status":{"type":"string","enum":["ok","failure"],"description":"Validation status"},"errors":{"type":"array","description":"A set of rule validation error objects","items":{"type":"object","description":"Rule validation result error","properties":{"errorMessage":{"type":"string","description":"Error message"},"errorCode":{"type":"number","description":"error code"},"errorCodeName":{"type":"string","description":"error code name"},"errorField":{"type":"string","enum":["operator","operators","authorizationGroups","designatedSigner","designatedSigners","contractMethods","amountAggregation","src","dst"],"description":"The field which the error relates to\n* operator - transaction initiator\n* operators - transaction initiators\n* authorizationGroups - transaction authorizer groups\n* designatedSigner - transaction signer\n* designatedSigners - transaction signers\n* contractMethods - contract methods\n* amountAggregation - transaction amount aggregation configuration\n* src - transaction source asset configuration\n* dst - transaction destination asset configuration\n"}},"required":["errorMessage","errorCode","errorCodeName","errorField"]}}},"required":["index","status","errors"]}}},"required":["errors","result"]},"metadata":{"type":"object","description":"Policy related metadata","properties":{"editedBy":{"type":"string","description":"The user id of the user who last edited the policy"},"editedAt":{"type":"string","description":"The timestamp of the last edit of the policy"},"publishedBy":{"type":"string","description":"The user id of the user who last published the policy"},"publishedAt":{"type":"string","description":"The timestamp of the last publish of the policy"}}}},"required":["status","rules","checkResult","metadata"]},"description":"Send publish request for a certain draft id.\n\nSend publish request of certain draft id and returns the response.
\n**Note:** These endpoints are currently in beta and might be subject to changes.\nIf you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"put","path":"/tap/draft","name":"tap_draft_put","parameters":[{"type":"object","properties":{"body":{}}}],"output":{"type":"object","description":"Draft validation","properties":{"draftResponse":{"type":"object","description":"Response object for draft operations","properties":{"status":{"type":"string","description":"Operation status"},"rules":{"type":"array","description":"Draft rules","items":{"type":"object","description":"Policy rule which is enforced on transactions","properties":{"operator":{"type":"string","description":"(deprecated - replaced by \"operators\") | Defines users who can initiate the type of transaction to which the rule applies. options are * \"*\" - All users are allowed * Specific User id","deprecated":true},"operators":{"type":"object","description":"Defines users/groups who can initiate the type of transaction to which the rule applies.","properties":{"wildcard":{"type":"string","enum":["*"],"description":"If used then this property should appear as the only child property\n* \"*\" - All users are allowed\n"},"users":{"type":"array","description":"Set of users ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Set of group ids","items":{"type":"string"}},"services":{"type":"array","description":"set of services to initiate transactions","items":{"type":"string"}}}},"transactionType":{"type":"string","enum":["TRANSFER","CONTRACT_CALL","APPROVE","MINT","BURN","SUPPLY","REDEEM","STAKE","RAW","TYPED_MESSAGE"],"description":"Defines the type of transaction to which the rule applies.\n * TRANSFER - Default. Transfers funds from one account to another\n * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.\n * APPROVE - Allows a smart contract to withdraw from a designated wallet.\n * MINT - Perform a mint operation (increase supply) on a supported token\n * BURN - Perform a burn operation (reduce supply) on a supported token\n * SUPPLY - Use for DeFi to lend assets\n * REDEEM - Use for DeFi to get lending back\n * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.\n * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.\n * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.\n"},"designatedSigner":{"type":"string","description":"(deprecated - replaced by \"designatedSigners\") Id representing the user who signs transactions that match a specific rule","deprecated":true},"designatedSigners":{"type":"object","description":"Set of ids representing the users who signs transactions that match a specific rule","properties":{"users":{"type":"array","description":"Set of users ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Set of group ids","items":{"type":"string"}}}},"type":{"type":"string","enum":["TRANSFER"],"description":"Policy rule type"},"action":{"type":"string","enum":["ALLOW","BLOCK","2-TIER"],"description":"Defines what occurs when a transaction meets the rule's criteria\n* ALLOW - The transaction goes through and can be signed without requiring additional approvals\n* BLOCK - The transaction is automatically blocked\n* 2-TIER - Only these users or user groups can approve \n If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through\n The list of entities are set is \"authorizationGroups\" field\n"},"asset":{"type":"string","description":"Defines the type of asset being transacted, options are\n* \"*\" - All assets\n* Specific asset\n"},"srcType":{"description":"(deprecated - replaced by \"src\") source account type"},"srcSubType":{"description":"(deprecated - replaced by \"src\") source sub account type"},"srcId":{"description":"(deprecated - replaced by \"src\") source account id"},"src":{"type":"object","description":"Defines source accounts the rule allows transfers to originate from","properties":{"ids":{"type":"array","description":"A set of ids","items":{"type":"array","description":"A set of ids in a tuple format","items":{"type":"string"},"minItems":1,"maxItems":3}}}},"dstType":{"description":"(deprecated - replaced by \"dst\") destination account type"},"dstSubType":{"description":"(deprecated - replaced by \"dst\") destination sub account type"},"dstId":{"description":"(deprecated - replaced by \"dst\") destination account id"},"dst":{"type":"object","description":"Defines the destination accounts the rule allows transfers to","properties":{"ids":{"type":"array","description":"A set of ids","items":{"type":"array","description":"A set of ids in a tuple format","items":{"type":"string"},"minItems":1,"maxItems":3}}}},"dstAddressType":{"type":"string","enum":["WHITELISTED","ONE_TIME","*"],"description":"Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.\nBy default, you can only transfer to an external address after it’s whitelisted.\n * WHITELISTED - Can only be sent to whitelisted addresses.\n * ONE_TIME - Can only be sent to non-whitelisted external addresses.\n * \"*\" - can be sent to whitelisted addresses or non-whitelisted external\n"},"amountCurrency":{"type":"string","enum":["USD","EUR","NATIVE"],"description":"* USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.\n* EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.\n* NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.\n"},"amountScope":{"type":"string","enum":["SINGLE_TX","TIMEFRAME"],"description":"* SINGLE_TX - limit applies to a single transaction\n* TIMEFRAME - limit applies to all transactions within the defined time period\n"},"amount":{"type":"number","description":"Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)"},"periodSec":{"type":"number","description":"Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.\nWhen the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.\n"},"authorizers":{"type":"array","description":"(deprecated - replaced by \"authorizationGroups\") Allowed entities which can approves a transaction","deprecated":true,"items":{"type":"string"}},"authorizersCount":{"type":"number","description":"(deprecated - replaced by \"authorizationGroups\") Min amount of entities which are needed to approve a transaction","deprecated":true},"authorizationGroups":{"type":"object","description":"Defines the transaction approval terms","properties":{"logic":{"type":"string","enum":["AND","OR"],"description":"* AND - requires approval of all authorization groups\n* OR - requires approval of at least one of the authorization groups\n"},"allowOperatorAsAuthorizer":{"type":"boolean","description":"Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction"},"groups":{"type":"array","description":"Groups of entities which can approve the transaction","items":{"type":"object","properties":{"users":{"type":"array","description":"User ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Group ids","items":{"type":"string"}},"th":{"type":"number","description":"Represents the min amount of entities which are required to approve the transaction, default is 1."}}}}}},"amountAggregation":{"type":"object","description":"Defines the method by which the Policy Engine calculates accumulation.\nIt uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.\n","properties":{"operators":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"},"srcTransferPeers":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"},"dstTransferPeers":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"}}},"rawMessageSigning":{"type":"object","description":"Raw message signing configuration","properties":{"algorithm":{"type":"string"},"derivationPath":{"type":"object","properties":{"path":{"type":"array","items":{"type":"number"}}}}}},"applyForApprove":{"type":"boolean","description":"Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)"},"applyForTypedMessage":{"type":"boolean","description":"Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)"},"externalDescriptor":{"type":"string","description":"A unique id identifying the rule"}},"required":["type","action","asset","amountCurrency","amountScope","amount","periodSec","externalDescriptor"]}},"draftId":{"type":"string","description":"Draft unique id"},"metadata":{"type":"object","description":"Policy related metadata","properties":{"editedBy":{"type":"string","description":"The user id of the user who last edited the policy"},"editedAt":{"type":"string","description":"The timestamp of the last edit of the policy"},"publishedBy":{"type":"string","description":"The user id of the user who last published the policy"},"publishedAt":{"type":"string","description":"The timestamp of the last publish of the policy"}}}},"required":["draftId","status","rules","metadata"]},"validation":{"type":"object","description":"Policy validation object","properties":{"status":{"type":"string","description":"Validation status"},"checkResult":{"type":"object","description":"Policy rules validation result","properties":{"errors":{"type":"number","description":"Number of errors"},"result":{"type":"array","description":"A set of validation results","items":{"type":"object","description":"The rule validation result","properties":{"index":{"type":"number","description":"Rule index number in the policy"},"status":{"type":"string","enum":["ok","failure"],"description":"Validation status"},"errors":{"type":"array","description":"A set of rule validation error objects","items":{"type":"object","description":"Rule validation result error","properties":{"errorMessage":{"type":"string","description":"Error message"},"errorCode":{"type":"number","description":"error code"},"errorCodeName":{"type":"string","description":"error code name"},"errorField":{"type":"string","enum":["operator","operators","authorizationGroups","designatedSigner","designatedSigners","contractMethods","amountAggregation","src","dst"],"description":"The field which the error relates to\n* operator - transaction initiator\n* operators - transaction initiators\n* authorizationGroups - transaction authorizer groups\n* designatedSigner - transaction signer\n* designatedSigners - transaction signers\n* contractMethods - contract methods\n* amountAggregation - transaction amount aggregation configuration\n* src - transaction source asset configuration\n* dst - transaction destination asset configuration\n"}},"required":["errorMessage","errorCode","errorCodeName","errorField"]}}},"required":["index","status","errors"]}}},"required":["errors","result"]}},"required":["status","checkResult"]}},"required":["draftResponse","validation"]},"description":"Update the draft with a new set of rules.\n\nUpdate the draft and return its validation.
\n**Note:** These endpoints are currently in beta and might be subject to changes.\nIf you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"post","path":"/tap/publish","name":"tap_publish_post","parameters":[{"type":"object","properties":{"body":{}}}],"output":{"type":"object","description":"Response object of the publish policy operation","properties":{"status":{"type":"string","enum":["SUCCESS","UNVALIDATED","INVALID_CONFIGURATION","PENDING","PENDING_CONSOLE_APPROVAL","AWAITING_QUORUM","UNHANDLED_ERROR"],"description":"* SUCCESS - success\n* UNVALIDATED - not validated yet\n* INVALID_CONFIGURATION - at least one rule is invalid\n* PENDING - pending approval\n* PENDING_CONSOLE_APPROVAL - pending approval from the console app\n* AWAITING_QUORUM - pending quorum approval\n* UNHANDLED_ERROR - unhandled error\n"},"rules":{"type":"array","items":{"type":"object","description":"Policy rule which is enforced on transactions","properties":{"operator":{"type":"string","description":"(deprecated - replaced by \"operators\") | Defines users who can initiate the type of transaction to which the rule applies. options are * \"*\" - All users are allowed * Specific User id","deprecated":true},"operators":{"type":"object","description":"Defines users/groups who can initiate the type of transaction to which the rule applies.","properties":{"wildcard":{"type":"string","enum":["*"],"description":"If used then this property should appear as the only child property\n* \"*\" - All users are allowed\n"},"users":{"type":"array","description":"Set of users ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Set of group ids","items":{"type":"string"}},"services":{"type":"array","description":"set of services to initiate transactions","items":{"type":"string"}}}},"transactionType":{"type":"string","enum":["TRANSFER","CONTRACT_CALL","APPROVE","MINT","BURN","SUPPLY","REDEEM","STAKE","RAW","TYPED_MESSAGE"],"description":"Defines the type of transaction to which the rule applies.\n * TRANSFER - Default. Transfers funds from one account to another\n * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.\n * APPROVE - Allows a smart contract to withdraw from a designated wallet.\n * MINT - Perform a mint operation (increase supply) on a supported token\n * BURN - Perform a burn operation (reduce supply) on a supported token\n * SUPPLY - Use for DeFi to lend assets\n * REDEEM - Use for DeFi to get lending back\n * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.\n * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.\n * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.\n"},"designatedSigner":{"type":"string","description":"(deprecated - replaced by \"designatedSigners\") Id representing the user who signs transactions that match a specific rule","deprecated":true},"designatedSigners":{"type":"object","description":"Set of ids representing the users who signs transactions that match a specific rule","properties":{"users":{"type":"array","description":"Set of users ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Set of group ids","items":{"type":"string"}}}},"type":{"type":"string","enum":["TRANSFER"],"description":"Policy rule type"},"action":{"type":"string","enum":["ALLOW","BLOCK","2-TIER"],"description":"Defines what occurs when a transaction meets the rule's criteria\n* ALLOW - The transaction goes through and can be signed without requiring additional approvals\n* BLOCK - The transaction is automatically blocked\n* 2-TIER - Only these users or user groups can approve \n If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through\n The list of entities are set is \"authorizationGroups\" field\n"},"asset":{"type":"string","description":"Defines the type of asset being transacted, options are\n* \"*\" - All assets\n* Specific asset\n"},"srcType":{"description":"(deprecated - replaced by \"src\") source account type"},"srcSubType":{"description":"(deprecated - replaced by \"src\") source sub account type"},"srcId":{"description":"(deprecated - replaced by \"src\") source account id"},"src":{"type":"object","description":"Defines source accounts the rule allows transfers to originate from","properties":{"ids":{"type":"array","description":"A set of ids","items":{"type":"array","description":"A set of ids in a tuple format","items":{"type":"string"},"minItems":1,"maxItems":3}}}},"dstType":{"description":"(deprecated - replaced by \"dst\") destination account type"},"dstSubType":{"description":"(deprecated - replaced by \"dst\") destination sub account type"},"dstId":{"description":"(deprecated - replaced by \"dst\") destination account id"},"dst":{"type":"object","description":"Defines the destination accounts the rule allows transfers to","properties":{"ids":{"type":"array","description":"A set of ids","items":{"type":"array","description":"A set of ids in a tuple format","items":{"type":"string"},"minItems":1,"maxItems":3}}}},"dstAddressType":{"type":"string","enum":["WHITELISTED","ONE_TIME","*"],"description":"Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.\nBy default, you can only transfer to an external address after it’s whitelisted.\n * WHITELISTED - Can only be sent to whitelisted addresses.\n * ONE_TIME - Can only be sent to non-whitelisted external addresses.\n * \"*\" - can be sent to whitelisted addresses or non-whitelisted external\n"},"amountCurrency":{"type":"string","enum":["USD","EUR","NATIVE"],"description":"* USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.\n* EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.\n* NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.\n"},"amountScope":{"type":"string","enum":["SINGLE_TX","TIMEFRAME"],"description":"* SINGLE_TX - limit applies to a single transaction\n* TIMEFRAME - limit applies to all transactions within the defined time period\n"},"amount":{"type":"number","description":"Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)"},"periodSec":{"type":"number","description":"Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.\nWhen the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.\n"},"authorizers":{"type":"array","description":"(deprecated - replaced by \"authorizationGroups\") Allowed entities which can approves a transaction","deprecated":true,"items":{"type":"string"}},"authorizersCount":{"type":"number","description":"(deprecated - replaced by \"authorizationGroups\") Min amount of entities which are needed to approve a transaction","deprecated":true},"authorizationGroups":{"type":"object","description":"Defines the transaction approval terms","properties":{"logic":{"type":"string","enum":["AND","OR"],"description":"* AND - requires approval of all authorization groups\n* OR - requires approval of at least one of the authorization groups\n"},"allowOperatorAsAuthorizer":{"type":"boolean","description":"Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction"},"groups":{"type":"array","description":"Groups of entities which can approve the transaction","items":{"type":"object","properties":{"users":{"type":"array","description":"User ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Group ids","items":{"type":"string"}},"th":{"type":"number","description":"Represents the min amount of entities which are required to approve the transaction, default is 1."}}}}}},"amountAggregation":{"type":"object","description":"Defines the method by which the Policy Engine calculates accumulation.\nIt uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.\n","properties":{"operators":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"},"srcTransferPeers":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"},"dstTransferPeers":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"}}},"rawMessageSigning":{"type":"object","description":"Raw message signing configuration","properties":{"algorithm":{"type":"string"},"derivationPath":{"type":"object","properties":{"path":{"type":"array","items":{"type":"number"}}}}}},"applyForApprove":{"type":"boolean","description":"Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)"},"applyForTypedMessage":{"type":"boolean","description":"Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)"},"externalDescriptor":{"type":"string","description":"A unique id identifying the rule"}},"required":["type","action","asset","amountCurrency","amountScope","amount","periodSec","externalDescriptor"]}},"checkResult":{"type":"object","description":"Policy rules validation result","properties":{"errors":{"type":"number","description":"Number of errors"},"result":{"type":"array","description":"A set of validation results","items":{"type":"object","description":"The rule validation result","properties":{"index":{"type":"number","description":"Rule index number in the policy"},"status":{"type":"string","enum":["ok","failure"],"description":"Validation status"},"errors":{"type":"array","description":"A set of rule validation error objects","items":{"type":"object","description":"Rule validation result error","properties":{"errorMessage":{"type":"string","description":"Error message"},"errorCode":{"type":"number","description":"error code"},"errorCodeName":{"type":"string","description":"error code name"},"errorField":{"type":"string","enum":["operator","operators","authorizationGroups","designatedSigner","designatedSigners","contractMethods","amountAggregation","src","dst"],"description":"The field which the error relates to\n* operator - transaction initiator\n* operators - transaction initiators\n* authorizationGroups - transaction authorizer groups\n* designatedSigner - transaction signer\n* designatedSigners - transaction signers\n* contractMethods - contract methods\n* amountAggregation - transaction amount aggregation configuration\n* src - transaction source asset configuration\n* dst - transaction destination asset configuration\n"}},"required":["errorMessage","errorCode","errorCodeName","errorField"]}}},"required":["index","status","errors"]}}},"required":["errors","result"]},"metadata":{"type":"object","description":"Policy related metadata","properties":{"editedBy":{"type":"string","description":"The user id of the user who last edited the policy"},"editedAt":{"type":"string","description":"The timestamp of the last edit of the policy"},"publishedBy":{"type":"string","description":"The user id of the user who last published the policy"},"publishedAt":{"type":"string","description":"The timestamp of the last publish of the policy"}}}},"required":["status","rules","checkResult","metadata"]},"description":"Send publish request for a set of policy rules.\n\nSend publish request of set of policy rules and returns the response.
\n**Note:** These endpoints are currently in beta and might be subject to changes.\nIf you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"}],"errors":[{"method":"post","path":"/off_exchange/settlements/trader","messages":["Failed to escape $ref"]},{"method":"get","path":"/off_exchange/settlements/transactions","messages":["Failed to escape $ref"]}],"options":{"keyword":true,"separate":null}} \ No newline at end of file diff --git a/examples/keyword/iamport.json b/examples/keyword/iamport.json index 79deab3..b3a8338 100644 --- a/examples/keyword/iamport.json +++ b/examples/keyword/iamport.json @@ -1,6803 +1 @@ -{ - "openapi": "3.0.3", - "functions": [ - { - "method": "get", - "path": "/certifications/{imp_uid}", - "name": "certifications_getByImp_uid", - "parameters": [ - { - "type": "object", - "properties": { - "imp_uid": { - "type": "string", - "description": "대상 본인인증 정보의 " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "imp_uid": { - "description": "아임포트가 발급해 준 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "서비스로부터의 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "name": { - "description": "본인인증대상자 성명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "gender": { - "description": "성별.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "birth": { - "description": "생년월일.\n\n리눅스 타임이 쓰인다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "birthday": { - "description": "생년월일, YYYYMMDD 형식.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^([0-9]{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$" - }, - "foreigner": { - "type": "boolean", - "description": "외국인 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "phone": { - "description": "본인인증 대상자 핸드폰 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "carrier": { - "type": "string", - "enum": [ - "SKT", - "KT", - "LGT" - ], - "description": "본인인증 대상자 통신사 코드.", - "x-typia-required": true, - "x-typia-optional": false - }, - "certified": { - "type": "boolean", - "description": "OTP 인증 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "certified_at": { - "description": "OTP 인증 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "unique_key": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "unique_in_site": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "description": "PG 제공자.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "origin": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "__otp": { - "description": "(테스트 전용) OTP 코드.\n\n오직 `fake-iamport-server` 에서만 쓰이는 속성으로써, 본인인증을 시뮬레이션할 때,\n어떠한 OTP 코드가 발급되었는 지를 확인하기 위하여 사용된다. 이를 이용하여\n{@link functional.certifications.otp.confirm } 함수를 호출하면, 본인인증을 완료할\n수 있다.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - } - }, - "required": [ - "imp_uid", - "merchant_uid", - "name", - "gender", - "birth", - "birthday", - "foreigner", - "phone", - "carrier", - "certified", - "certified_at", - "unique_key", - "unique_in_site", - "pg_tid", - "pg_provider", - "origin" - ], - "description": "본인 인증 내역.\n\n`IIamportCertification` 은 아임포트의 본인인증 정보를 형상화한 자료구조 인터페이스이다.\n\n단, `IIamportCertification` 레코드의 존재가 곧 본인인증의 완결을 뜻하는 것은 아니다.\n{@link IIamportCertification.certified } 값이 `true` 여야만이 비로소, 본인인증\n대상자가 자신의 핸드폰 번호로 전송된 OTP 를 아임포트의 본인인증 팝업창에 정확히 적어,\n본인인증을 완료했음을 의미한다.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "본인인증 정보 열람하기.\n\n`certiciations.at` 은 본인인증 정보를 열람할 때 사용하는 API 함수이다.\n\n다만 이 API 함수를 통하여 열람한 본인인증 정보 {@link IIamportCertification } 이\n곧 OTP 인증까지 마쳐 본인인증을 모두 마친 레코드라는 보장은 없다. 본인인증의 완결\n여부는 오직, {@link IIamportCertification.certified } 값을 직접 검사해봐야만 알\n수 있기 때문이다." - }, - { - "method": "delete", - "path": "/certifications/{imp_uid}", - "name": "certifications_eraseByImp_uid", - "parameters": [ - { - "type": "object", - "properties": { - "imp_uid": { - "type": "string", - "description": "대상 본인인증 정보의 " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "imp_uid": { - "description": "아임포트가 발급해 준 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "서비스로부터의 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "name": { - "description": "본인인증대상자 성명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "gender": { - "description": "성별.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "birth": { - "description": "생년월일.\n\n리눅스 타임이 쓰인다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "birthday": { - "description": "생년월일, YYYYMMDD 형식.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^([0-9]{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$" - }, - "foreigner": { - "type": "boolean", - "description": "외국인 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "phone": { - "description": "본인인증 대상자 핸드폰 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "carrier": { - "type": "string", - "enum": [ - "SKT", - "KT", - "LGT" - ], - "description": "본인인증 대상자 통신사 코드.", - "x-typia-required": true, - "x-typia-optional": false - }, - "certified": { - "type": "boolean", - "description": "OTP 인증 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "certified_at": { - "description": "OTP 인증 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "unique_key": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "unique_in_site": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "description": "PG 제공자.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "origin": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "__otp": { - "description": "(테스트 전용) OTP 코드.\n\n오직 `fake-iamport-server` 에서만 쓰이는 속성으로써, 본인인증을 시뮬레이션할 때,\n어떠한 OTP 코드가 발급되었는 지를 확인하기 위하여 사용된다. 이를 이용하여\n{@link functional.certifications.otp.confirm } 함수를 호출하면, 본인인증을 완료할\n수 있다.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - } - }, - "required": [ - "imp_uid", - "merchant_uid", - "name", - "gender", - "birth", - "birthday", - "foreigner", - "phone", - "carrier", - "certified", - "certified_at", - "unique_key", - "unique_in_site", - "pg_tid", - "pg_provider", - "origin" - ], - "description": "본인 인증 내역.\n\n`IIamportCertification` 은 아임포트의 본인인증 정보를 형상화한 자료구조 인터페이스이다.\n\n단, `IIamportCertification` 레코드의 존재가 곧 본인인증의 완결을 뜻하는 것은 아니다.\n{@link IIamportCertification.certified } 값이 `true` 여야만이 비로소, 본인인증\n대상자가 자신의 핸드폰 번호로 전송된 OTP 를 아임포트의 본인인증 팝업창에 정확히 적어,\n본인인증을 완료했음을 의미한다.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "본인인증 정보 삭제하기." - }, - { - "method": "post", - "path": "/certifications/otp/request", - "name": "certifications_otp_request_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "name": { - "description": "본인인증대상자 성명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "phone": { - "description": "본인인증 대상자 핸드폰 번호.\n\n핸드폰 번호에 \"-\" 값이 들어가던 아니던 상관 없음.\n\n다만, 내부적으로는 \"-\" 값을 제거하여 처리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "birth": { - "description": "생년월일.\n\nYYYYMMDD 형식.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^([0-9]{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$" - }, - "gender_digit": { - "description": "주민등록 뒷부분 첫 자리.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "carrier": { - "type": "string", - "enum": [ - "SKT", - "KT", - "LGT" - ], - "description": "본인인증 대상자 통신사 코드.", - "x-typia-required": true, - "x-typia-optional": false - }, - "is_mvno": { - "type": "boolean", - "description": "알뜰폰 여부.", - "x-typia-required": false, - "x-typia-optional": true - }, - "commpany": { - "description": "가맹점 서비스 명칭 또는 domain URL.\n\nKISA 에서 대상자에게 발송하는 SMS에 안내될 서비스 명칭.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "merchant_uid": { - "description": "귀사 서비스에서의 본인인증 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "pg": { - "description": "PG 사 구분자.\n\n다날 상점아이디를 2개 이상 동시에 사용하시려는 경우에 설정하면 된다.\n\n**danal.{상점아이디}** 형태로 지정.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - } - }, - "required": [ - "name", - "phone", - "birth", - "gender_digit", - "carrier" - ], - "description": "본인 인증 입력 정보.", - "x-typia-jsDocTags": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "imp_uid": { - "description": "본인인증정보의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "imp_uid" - ], - "description": "본인인증 정보의 접근자 구조체.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "본인인증 요청하기.\n\n`certifications.otp.request` 는 아임포트 서버에 본인인증을 요청하는 API 함수이다.\n이 API 를 호출하면 본인인증 대상자의 핸드폰으로 OTP 문자가 전송되며, 본인인증\n대상자가 {@link certifications.otp.confirm } 을 통하여 이 OTP 번호를 정확히\n입력함으로써, 본인인증이 완결된다.\n\n또한 본인인증 대상자가 자신의 핸드폰으로 전송된 OTP 문자를 입력하기 전에도,\n여전히해당 본인인증 내역은 {@link certifications.at } 함수를 통하여 조회할 수 있다.\n다만, 이 때 리턴되는 {@link IIamportCertification } 에서 인증의 완결 여부를\n지칭하는 {@link IIamportCertification.certified } 값은 `false` 이다." - }, - { - "method": "post", - "path": "/certifications/otp/confirm/{imp_uid}", - "name": "certifications_otp_confirm_postByImp_uid", - "parameters": [ - { - "type": "object", - "properties": { - "imp_uid": { - "type": "string", - "description": "대상 본인인증 정보의 " - }, - "body": { - "type": "object", - "properties": { - "otp": { - "description": "SMS 로 전송된 본인인증 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "otp" - ], - "description": "본인인증 승인을 위한 입력 정보.", - "x-typia-jsDocTags": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "imp_uid": { - "description": "아임포트가 발급해 준 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "서비스로부터의 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "name": { - "description": "본인인증대상자 성명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "gender": { - "description": "성별.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "birth": { - "description": "생년월일.\n\n리눅스 타임이 쓰인다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "birthday": { - "description": "생년월일, YYYYMMDD 형식.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^([0-9]{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$" - }, - "foreigner": { - "type": "boolean", - "description": "외국인 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "phone": { - "description": "본인인증 대상자 핸드폰 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "carrier": { - "type": "string", - "enum": [ - "SKT", - "KT", - "LGT" - ], - "description": "본인인증 대상자 통신사 코드.", - "x-typia-required": true, - "x-typia-optional": false - }, - "certified": { - "type": "boolean", - "description": "OTP 인증 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "certified_at": { - "description": "OTP 인증 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "unique_key": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "unique_in_site": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "description": "PG 제공자.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "origin": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "__otp": { - "description": "(테스트 전용) OTP 코드.\n\n오직 `fake-iamport-server` 에서만 쓰이는 속성으로써, 본인인증을 시뮬레이션할 때,\n어떠한 OTP 코드가 발급되었는 지를 확인하기 위하여 사용된다. 이를 이용하여\n{@link functional.certifications.otp.confirm } 함수를 호출하면, 본인인증을 완료할\n수 있다.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - } - }, - "required": [ - "imp_uid", - "merchant_uid", - "name", - "gender", - "birth", - "birthday", - "foreigner", - "phone", - "carrier", - "certified", - "certified_at", - "unique_key", - "unique_in_site", - "pg_tid", - "pg_provider", - "origin" - ], - "description": "본인 인증 내역.\n\n`IIamportCertification` 은 아임포트의 본인인증 정보를 형상화한 자료구조 인터페이스이다.\n\n단, `IIamportCertification` 레코드의 존재가 곧 본인인증의 완결을 뜻하는 것은 아니다.\n{@link IIamportCertification.certified } 값이 `true` 여야만이 비로소, 본인인증\n대상자가 자신의 핸드폰 번호로 전송된 OTP 를 아임포트의 본인인증 팝업창에 정확히 적어,\n본인인증을 완료했음을 의미한다.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "본인인증 시 발급된 OTP 코드 입력하기.\n\n`certifications.otp.confirm` 는 {@link certifications.otp.request } 를 통하여\n발급된 본인인증 건에 대하여, 본인인증 대상자의 휴대폰으로 전송된 OTP 번호를\n검증하고, 입력한 OTP 번호가 맞거든 해당 본인인증 건을 승인하여 완료 처리해주는\nAPI 함수이다.\n\n이처럼 본인인증을 완료하거든, 해당 본인인증 건 {@link IIamportCertification } 의\n{@link IIamportCertification.certified } 값이 비로소 `true` 로 변경되어,\n비로소 완결된다." - }, - { - "method": "post", - "path": "/internal/webhook", - "name": "internal_webhook_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ], - "description": "현재 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "imp_uid", - "merchant_uid", - "status" - ], - "description": "웹훅 데이터.", - "x-typia-jsDocTags": [] - } - } - } - ], - "description": "웹훅 이벤트 더미 리스너.\n\n`internal.webhook` 은 실제 아임포트의 서버에는 존재하지 않는 API 로써,\n`fake-impoart-server` 의 {@link Configuration.WEBHOOK_URL } 에 아무런 URL 을 설정하지\n않으면, `fake-iamport-server` 로부터 발생하는 모든 종류의 웹훅 이벤트는 이 곳으로 전달되어\n무의미하게 사라진다.\n\n따라서 `fake-iamport-server` 를 사용하여 아임포트 서버와의 연동을 미리 검증코자 할 때는,\n반드시 {@link Configuration.WEBHOOK_URL } 를 설정하여 웹훅 이벤트가 귀하의 백엔드 서버로\n제대로 전달되도록 하자." - }, - { - "method": "get", - "path": "/internal/deposit/{imp_uid}", - "name": "internal_deposit_getByImp_uid", - "parameters": [ - { - "type": "object", - "properties": { - "imp_uid": { - "type": "string", - "description": "대상 결제의 " - } - } - } - ], - "description": "가상 계좌에 입금하기.\n\n`internal.deposit` 은 실제 아임포트 결제 서버에는 존재하지 않는 API 로써, 가상 계좌\n결제를 신청한 고객이, 이후 가상 계좌에 목표 금액을 입금하는 상황을 시뮬레이션 할 수 있는\n함수이다.\n\n즉, `internal.deposit` 는 고객이 스스로에게 가상으로 발급된 계좌에 입금을 하고, 그에 따라\n아임포트 서버에서 webhook 이벤트가 발생, 이를 귀하의 백엔드 서버로 전송하는 일련의 상황을\n시뮬레이션하기 위하여 설계된 테스트 함수다." - }, - { - "method": "get", - "path": "/payments/{imp_uid}", - "name": "payments_getByImp_uid", - "parameters": [ - { - "type": "object", - "properties": { - "imp_uid": { - "type": "string", - "description": "대상 결제 기록의 " - }, - "query": { - "type": "object", - "properties": { - "extension": { - "type": "boolean", - "description": "페이팔의 경우, 이 값을 `true` 로 할 것.", - "x-typia-required": false, - "x-typia-optional": true - } - }, - "description": "결제 수단이 페이팔인 경우, 페이팔의 구매자 보호정책에 의해 결제 승인 시점에\nPending 상태를 만든 후, 내부 심사등을 통해 최종 결제 완료라고 변경함.\n\n`iamport` 의 기술적 이슈로 해당 상태를 status: failed 로 기록함. 추후\n페이팔에서 최종결제완료로 변경된 경우, `iamport` 에서 `paid` 로 변경 후,\n해당건에 대한 웹훅 발송. `iamport` 를 사용하는 고객사에서는, failed 로 이미\n처리된 결제건에 대한 paid 상태의 웹훅을 받는 문제점이 생김.\n\n이에, `iamport` 에서 제공하는 `/payment/{imp_uid}` 에 query-string 으로\n`extension=true` 옵션을 추가해야 함", - "x-typia-jsDocTags": [ - { - "name": "issue", - "text": [ - { - "text": "https://github.com/samchon/fake-iamport-server/issues/13", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Sangjin Han - https://github.com/ltnscp9028", - "kind": "text" - } - ] - } - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "oneOf": [ - { - "type": "object", - "properties": { - "card_code": { - "description": "카드 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_name": { - "description": "카드 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "\\d{4}-\\d{4}-\\d{4}-\\d{4}" - }, - "card_quota": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "integer" - }, - "apply_num": { - "description": "카드사 승인번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pay_method": { - "type": "string", - "enum": [ - "card", - "samsung" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "card_code", - "card_name", - "card_number", - "card_quota", - "apply_num", - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "bank_code": { - "description": "은행 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "bank_name": { - "description": "은행 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pay_method": { - "type": "string", - "enum": [ - "trans" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "bank_code", - "bank_name", - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "계좌 이체 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "vbank_code": { - "description": "가상 계좌 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_name": { - "description": "가상 게좌 이름", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_num": { - "description": "가상 계좌 번호", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_holder": { - "description": "가상 계좌 예금주.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_date": { - "description": "가상 계좌 입금 만료 기한.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vbank_issued_at": { - "description": "가상 계좌 개설 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "pay_method": { - "type": "string", - "enum": [ - "vbank" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "vbank_code", - "vbank_name", - "vbank_num", - "vbank_holder", - "vbank_date", - "vbank_issued_at", - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "pay_method": { - "type": "string", - "enum": [ - "phone", - "kpay", - "kakaopay", - "payco", - "lpay", - "ssgpay", - "tosspay", - "cultureland", - "smartculture", - "happymoney", - "booknlife", - "point" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "결제 기본 (공통) 정보.", - "x-typia-jsDocTags": [] - } - ], - "description": "결제 정보.\n\n`IIamportPayment` 는 아임포트의 결제 정보를 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.pay_method === \"card\")\n payment.card_number; // payment be IIamportCardPayment\n```", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "결제 기록 열람하기.\n\n아임포트를 통하여 발생한 결제 기록을 열람한다." - }, - { - "method": "post", - "path": "/payments/cancel", - "name": "payments_cancel_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "description": "취소 금액, 부분 취소도 가능하다.\n\n누락시 전액 취소.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "checksum": { - "description": "취소 트랜잭션 수행 전, 현재 시점의 취소 가능한 잔액.\n\nAPI요청자가 기록하고 있는 취소가능 잔액과 아임포트가 기록하고 있는 취소가능 잔액이\n일치하는지 사전에 검증하고, 검증에 실패하면 트랜잭션을 수행하지 않는다.\n\n`null` 인 경우에는 검증 프로세스를 생략.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number", - "nullable": true - }, - "reason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "tax_free": { - "description": "취소요청금액 중 면세금액.", - "x-typia-jsDocTags": [ - { - "name": "default", - "text": [ - { - "text": "0", - "kind": "text" - } - ] - } - ], - "x-typia-required": false, - "x-typia-optional": true, - "type": "number", - "default": 0 - }, - "refund_holder": { - "description": "환불계좌 예금주.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "refund_bank": { - "description": "환불계좌 은행 코드.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "refund_account": { - "description": "환불계좌 계좌번호.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "refund_tel": { - "description": "환불계좌 예금주 연락처", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - } - }, - "required": [ - "imp_uid", - "merchant_uid", - "checksum", - "reason" - ], - "description": "결제 취소 입력 정보.", - "x-typia-jsDocTags": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "oneOf": [ - { - "type": "object", - "properties": { - "card_code": { - "description": "카드 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_name": { - "description": "카드 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "\\d{4}-\\d{4}-\\d{4}-\\d{4}" - }, - "card_quota": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "integer" - }, - "apply_num": { - "description": "카드사 승인번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pay_method": { - "type": "string", - "enum": [ - "card", - "samsung" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "card_code", - "card_name", - "card_number", - "card_quota", - "apply_num", - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "bank_code": { - "description": "은행 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "bank_name": { - "description": "은행 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pay_method": { - "type": "string", - "enum": [ - "trans" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "bank_code", - "bank_name", - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "계좌 이체 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "vbank_code": { - "description": "가상 계좌 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_name": { - "description": "가상 게좌 이름", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_num": { - "description": "가상 계좌 번호", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_holder": { - "description": "가상 계좌 예금주.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_date": { - "description": "가상 계좌 입금 만료 기한.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vbank_issued_at": { - "description": "가상 계좌 개설 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "pay_method": { - "type": "string", - "enum": [ - "vbank" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "vbank_code", - "vbank_name", - "vbank_num", - "vbank_holder", - "vbank_date", - "vbank_issued_at", - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "pay_method": { - "type": "string", - "enum": [ - "phone", - "kpay", - "kakaopay", - "payco", - "lpay", - "ssgpay", - "tosspay", - "cultureland", - "smartculture", - "happymoney", - "booknlife", - "point" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "결제 기본 (공통) 정보.", - "x-typia-jsDocTags": [] - } - ], - "description": "결제 정보.\n\n`IIamportPayment` 는 아임포트의 결제 정보를 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.pay_method === \"card\")\n payment.card_number; // payment be IIamportCardPayment\n```", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "결제 취소하기.\n\n만약 가상 계좌를 통한 결제였다면, 반드시 환불 계좌 정보를 입력해줘야 한다." - }, - { - "method": "get", - "path": "/receipts/{imp_uid}", - "name": "receipts_getByImp_uid", - "parameters": [ - { - "type": "object", - "properties": { - "imp_uid": { - "type": "string", - "description": "귀속 결제의 " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "imp_uid": { - "description": "귀속 결제의 {@link IIamportPayment.imp_uid }.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_uid": { - "description": "현금 영수증의 고유 식별자 ID.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "apply_num": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "person", - "company" - ], - "description": "현금영수증 발행 타입 (대상)." - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "receipt_url": { - "description": "현금영수증 조회 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "applied_at": { - "description": "현금영수증 발행 시간.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "현금영수증 취소 시간.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - } - }, - "required": [ - "imp_uid", - "receipt_uid", - "apply_num", - "type", - "amount", - "vat", - "receipt_url", - "applied_at", - "cancelled_at" - ], - "description": "현금 영수증 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "현금 영수증 조회하기." - }, - { - "method": "post", - "path": "/receipts/{imp_uid}", - "name": "receipts_postByImp_uid", - "parameters": [ - { - "type": "object", - "properties": { - "imp_uid": { - "type": "string", - "description": "귀속 결제의 " - }, - "body": { - "type": "object", - "properties": { - "imp_uid": { - "description": "귀속 결제의 {@link IIamportPayment.imp_uid }.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "identifier": { - "description": "현금영수증 발생대상 식별정보.\n\n - 국세청현금영수증카드\n - 휴대폰번호\n - 주민등록번호\n - 사업자등록번호", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "identifier_type": { - "type": "string", - "enum": [ - "phone", - "person", - "business", - "taxcard" - ], - "description": "현금영수증 발행대상 유형.\n\n - person: 주민등록번호\n - business: 사업자등록번호\n - phone: 휴대폰번호\n - taxcard: 국세청현금영수증카드\n\n일부 PG 사의 경우 이 항목이 없어 된다는데, 어지간하면 그냥 쓰기 바람.", - "x-typia-required": false, - "x-typia-optional": true - }, - "type": { - "type": "string", - "enum": [ - "person", - "company" - ], - "description": "현금영수증 발행 타입 (대상).\n\n누락시 person 이 사용됨.", - "x-typia-required": false, - "x-typia-optional": true - }, - "buyer_name": { - "description": "구매자 이름.\n\n형금영수증 발행건 사후 추적을 위해 가급 입력하기 바람.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_email": { - "description": "구매자 이메일.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_tel": { - "description": "구매자 전화번호.\n\n현금영수증 발행건 사후 추적을 위해 가급 입력하기 바람.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "tax_free": { - "description": "면세 금액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - } - }, - "required": [ - "imp_uid", - "identifier" - ], - "description": "현금영수증 입력 정보.", - "x-typia-jsDocTags": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "imp_uid": { - "description": "귀속 결제의 {@link IIamportPayment.imp_uid }.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_uid": { - "description": "현금 영수증의 고유 식별자 ID.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "apply_num": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "person", - "company" - ], - "description": "현금영수증 발행 타입 (대상)." - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "receipt_url": { - "description": "현금영수증 조회 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "applied_at": { - "description": "현금영수증 발행 시간.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "현금영수증 취소 시간.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - } - }, - "required": [ - "imp_uid", - "receipt_uid", - "apply_num", - "type", - "amount", - "vat", - "receipt_url", - "applied_at", - "cancelled_at" - ], - "description": "현금 영수증 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "현금 영수증 발행하기." - }, - { - "method": "delete", - "path": "/receipts/{imp_uid}", - "name": "receipts_eraseByImp_uid", - "parameters": [ - { - "type": "object", - "properties": { - "imp_uid": { - "type": "string", - "description": "귀속 결제의 " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "imp_uid": { - "description": "귀속 결제의 {@link IIamportPayment.imp_uid }.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_uid": { - "description": "현금 영수증의 고유 식별자 ID.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "apply_num": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "person", - "company" - ], - "description": "현금영수증 발행 타입 (대상)." - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "receipt_url": { - "description": "현금영수증 조회 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "applied_at": { - "description": "현금영수증 발행 시간.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "현금영수증 취소 시간.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - } - }, - "required": [ - "imp_uid", - "receipt_uid", - "apply_num", - "type", - "amount", - "vat", - "receipt_url", - "applied_at", - "cancelled_at" - ], - "description": "현금 영수증 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "현금 영수증 취소하기." - }, - { - "method": "post", - "path": "/users/getToken", - "name": "users_getToken_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "imp_key": { - "description": "API 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "imp_secret": { - "description": "Secret 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "imp_key", - "imp_secret" - ], - "description": "아임포트에서 부여해 준 API 및 secret 키.", - "x-typia-jsDocTags": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "now": { - "description": "토큰 발행 시간.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "expired_at": { - "description": "토큰 만료 시간.\n\n리눅스 타임이 기준이며, 이를 JS 에서 사용하려거든, 아래와 같이 변환해야 한다.\n\n```typescript\nnew Date(user.expired_at * 1_000);\n```", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "access_token": { - "description": "유저 인증 토큰.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "now", - "expired_at", - "access_token" - ], - "description": "아임포트 유저 인증 정보.\n\n아임포트는 고객사에게 API 및 secret 키 정보, {@link IIamportUser.IAccessor } 를 발급해준다.\n\n하지만 이를 곧장 아임포트의 유저 인증에 사용할 수는 없고, 해당 API 및 secret 키를 토대로 유저\n인증 토큰을 발급받아야 하는데, 이 유저 인증 토큰에는 하필이면 만로 시간이라는 게 존재한다.\n`IIamportUser` 는 바로 이러한 유저 인증 토큰 및 그것의 만료 시간을 형상화한 자료구조\n인터페이스이다.\n\n더하여 이처럼 만료 시간이 존재하는 아임포트의 유저 인증 토큰의 특성상, 이것의 만료 시간이\n초과되지 않도록 관리하는 것은 매우 힘든 일이다. 이에 `iamport-server-api` 에서는 아임포트\n유저 인증 토큰이 만료될 때마다 자동 갱신해주는, {@link IamportConnector } 클래스를 제공한다.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "유저 인증 토큰 발행하기.\n\n아임포트에 가입하여 부여받은 API 및 secret 키를 토대로, 유저 인증 토큰을 발행한다.\n\n단, 아임포트가 발급해주는 유저 인증 토큰에는 유효 시간 {@link IIamportUser.expired_at }\n이 있어, 해당 시간이 지나거든 기 발급 토큰이 만료되어 더 이상 쓸 수 없게 된다. 때문에\n아임포트의 이러한 시간 제한에 구애받지 않고 자유로이 아임포트의 API 를 이용하고 싶다면,\n`iamport-server-api` 에서 제공해주는 {@link IamportConnector } 를 활용하도록 하자." - }, - { - "method": "post", - "path": "/vbanks", - "name": "vbanks_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "description": "총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vbank_code": { - "description": "가상계좌 은행 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_due": { - "description": "가상계좌 입금기한, 유닉스 타임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vbank_holder": { - "description": "예금주.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_name": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_email": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_tel": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_addr": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_postcode": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "pg": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "notice_url": { - "description": "가상 계좌 입금 정보를 수신할 URL.\n\n누락시 기본 웹훅 URL 사용.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "custom_data": { - "description": "커스텀 데이터, 자유롭게 사용 가능.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "pg_api_key": { - "description": "[이니시스 전용] 가맹점 콘솔에서 확인한 API 값.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - } - }, - "required": [ - "merchant_uid", - "amount", - "vbank_code", - "vbank_due", - "vbank_holder" - ], - "description": "가상 계좌 결제 입력 정보.\n\n가상 계좌를 임의 생성할 수 있다.\n\n단, 일부 PG 사 혹은 `fake-iamport-server` 만 가능.\n\n - 세틀뱅크\n - 나이스페이먼츠\n - KG이니시스", - "x-typia-jsDocTags": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "vbank_code": { - "description": "가상 계좌 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_name": { - "description": "가상 게좌 이름", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_num": { - "description": "가상 계좌 번호", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_holder": { - "description": "가상 계좌 예금주.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_date": { - "description": "가상 계좌 입금 만료 기한.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vbank_issued_at": { - "description": "가상 계좌 개설 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "pay_method": { - "type": "string", - "enum": [ - "vbank" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "vbank_code", - "vbank_name", - "vbank_num", - "vbank_holder", - "vbank_date", - "vbank_issued_at", - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "가상 계좌 발급하기." - }, - { - "method": "put", - "path": "/vbanks", - "name": "vbanks_put", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "imp_uid": { - "description": "대상 결제 기록의 {@link IIamportPayment.imp_uid }.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "description": "수정할 결제 금액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "vbank_due": { - "description": "수정할 가상계좌 입금 기한.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - } - }, - "required": [ - "imp_uid" - ], - "description": "가상 계좌 결제의 수정 입력 정보.\n\n아직 입금되지 않은 가상계좌의 입금기한 또는 입금금액을 수정할 수 있다.\n\n다만, 세틀뱅크 혹은 `fake-iamport-server` 만 가능.", - "x-typia-jsDocTags": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "vbank_code": { - "description": "가상 계좌 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_name": { - "description": "가상 게좌 이름", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_num": { - "description": "가상 계좌 번호", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_holder": { - "description": "가상 계좌 예금주.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_date": { - "description": "가상 계좌 입금 만료 기한.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vbank_issued_at": { - "description": "가상 계좌 개설 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "pay_method": { - "type": "string", - "enum": [ - "vbank" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "vbank_code", - "vbank_name", - "vbank_num", - "vbank_holder", - "vbank_date", - "vbank_issued_at", - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "가상 계좌 편집하기." - }, - { - "method": "get", - "path": "/subscribe/customers/{customer_uid}", - "name": "subscribe_customers_getByCustomer_uid", - "parameters": [ - { - "type": "object", - "properties": { - "customer_uid": { - "type": "string", - "description": "고객 (간편 결제 카드) 식별자 키" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_code": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_number": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_type": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "inserted": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "updated": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "customer_uid": { - "description": "고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "pg_provider", - "pg_id", - "card_name", - "card_code", - "card_number", - "card_type", - "customer_name", - "customer_tel", - "customer_email", - "customer_addr", - "customer_postcode", - "inserted", - "updated", - "customer_uid" - ], - "description": "간편 결제 카드 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "간편 결제 카드 정보 조회하기.\n\n`subscribe.customers.at` 은 고객이 {@link store } 나 혹은 아임포트가 제공하는\n간편 결제 카드 등록 창을 이용하여 저장한 간편 결제 카드 정보를 조회하는 API\n함수이다." - }, - { - "method": "post", - "path": "/subscribe/customers/{customer_uid}", - "name": "subscribe_customers_postByCustomer_uid", - "parameters": [ - { - "type": "object", - "properties": { - "customer_uid": { - "type": "string", - "description": "고객 (간편 결제 카드) 식별자 키" - }, - "body": { - "type": "object", - "properties": { - "card_number": { - "description": "카드 번호.\n\n형식: XXXX-XXXX-XXXX-XXXX", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "\\d{4}-\\d{4}-\\d{4}-\\d{4}" - }, - "expiry": { - "description": "카드 유효기간.\n\n형식: YYYY-MM", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^([0-9]{4})-(0[1-9]|1[012])$" - }, - "birth": { - "description": "생년월일 YYMMDD 또는 사업자등록번호 10자리.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^(([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01]))|(\\d{10})$" - }, - "pwd_2digit": { - "description": "카드 비밀번호 앞 두 자리.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "pattern": "\\d{2}" - }, - "cvc": { - "description": "카드 인증번호 (카드 뒷면 3 자리).", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "pattern": "\\d{2}" - }, - "customer_name": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customer_tel": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customer_email": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "format": "email" - }, - "customr_addr": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customer_postcode": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customer_uid": { - "description": "고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "card_number", - "expiry", - "birth", - "customer_uid" - ], - "description": "간편 결제 카드 입력 정보.", - "x-typia-jsDocTags": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_code": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_number": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_type": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "inserted": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "updated": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "customer_uid": { - "description": "고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "pg_provider", - "pg_id", - "card_name", - "card_code", - "card_number", - "card_type", - "customer_name", - "customer_tel", - "customer_email", - "customer_addr", - "customer_postcode", - "inserted", - "updated", - "customer_uid" - ], - "description": "간편 결제 카드 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "간편 결제 카드 등록하기.\n\n`subscribe.customers.stoer` 는 고객이 자신의 카드를 서버에 등록해두고, 매번 결제가\n필요할 때마다 카드 정보를 반복 입력하는 일 없이, 간편하게 결제를 진행하고자 할 때\n사용하는 API 함수이다.\n\n참고로 `subscribe.customers.store` 는 클라이언트 어플리케이션이 아임포트가 제공하는\n간편 결제 카드 등록 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는\n일은 없을 것이다. 다만, 고객이 간편 결제 카드를 등록하는 상황을 시뮬레이션하기 위하여,\n테스트 자동화 프로그램 수준에서 사용될 수는 있다." - }, - { - "method": "delete", - "path": "/subscribe/customers/{customer_uid}", - "name": "subscribe_customers_eraseByCustomer_uid", - "parameters": [ - { - "type": "object", - "properties": { - "customer_uid": { - "type": "string", - "description": "고객 (간편 결제 카드) 식별자 키" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_code": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_number": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_type": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "inserted": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "updated": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "customer_uid": { - "description": "고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "pg_provider", - "pg_id", - "card_name", - "card_code", - "card_number", - "card_type", - "customer_name", - "customer_tel", - "customer_email", - "customer_addr", - "customer_postcode", - "inserted", - "updated", - "customer_uid" - ], - "description": "간편 결제 카드 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "간편 결제 카드 삭제하기.\n\n간편 결제를 위하여 등록한 카드를 제거한다." - }, - { - "method": "post", - "path": "/subscribe/payments/onetime", - "name": "subscribe_payments_onetime_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "customer_uid": { - "description": "고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함.\n\n이를 생략시 단순 결제로만 그치며, 카드 정보가 간편 결제용으로 등록되지 아니함.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "card_number": { - "description": "카드 번호.\n\n형식: XXXX-XXXX-XXXX-XXXX", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "\\d{4}-\\d{4}-\\d{4}-\\d{4}" - }, - "expiry": { - "description": "카드 유효기간.\n\n형식: YYYY-MM", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^([0-9]{4})-(0[1-9]|1[012])$" - }, - "birth": { - "description": "생년월일 YYMMDD 또는 사업자등록번호 10자리.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^(([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01]))|(\\d{10})$" - }, - "pwd_2digit": { - "description": "카드 비밀번호 앞 두 자리.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "pattern": "\\d{2}" - }, - "cvc": { - "description": "카드 인증번호 (카드 뒷면 3 자리).", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "pattern": "\\d{2}" - }, - "customer_name": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customer_tel": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customer_email": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "format": "email" - }, - "customr_addr": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customer_postcode": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트가 아닌 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "name": { - "description": "주문 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ], - "description": "통화 정보.", - "x-typia-required": false, - "x-typia-optional": true - }, - "tax_free": { - "description": "면세 공급가액.\n\n기본값은 0 로써, 알아서 amount 의 1/11 로써 부가세 처리됨.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "card_quota": { - "description": "할부 개월 수.\n\n일시불은 0.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "buyer_name": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_email": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "format": "email" - }, - "buyer_tel": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_addr": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_postcode": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "interest_free_by_merchant": { - "type": "boolean", - "description": "카드할부처리할 때, 할부이자가 발생하는 경우 (카드사 무이자 프로모션 제외).\n\n부과되는 할부이자를 고객대신 가맹점이 지불하고자 PG사와 계약된 경우(현재, 나이스페이먼츠만 지원됨)", - "x-typia-required": false, - "x-typia-optional": true - }, - "use_card_point": { - "type": "boolean", - "description": "승인요청시 카드사 포인트 차감하며 결제승인처리할지 flag.\n\nPG사 영업담당자와 계약 당시 사전 협의 필요(현재, 나이스페이먼츠만 지원됨)", - "x-typia-required": false, - "x-typia-optional": true - }, - "custom_data": { - "description": "임의 정보를 기재할 수 있다.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "notice_url": { - "description": "결제 성공시 통지될 Notification, 웹훅 URL.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "format": "url" - } - }, - "required": [ - "card_number", - "expiry", - "birth", - "merchant_uid", - "amount", - "name" - ], - "description": "결제 신청 입력 정보.", - "x-typia-jsDocTags": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "card_code": { - "description": "카드 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_name": { - "description": "카드 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "\\d{4}-\\d{4}-\\d{4}-\\d{4}" - }, - "card_quota": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "integer" - }, - "apply_num": { - "description": "카드사 승인번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pay_method": { - "type": "string", - "enum": [ - "card", - "samsung" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "card_code", - "card_name", - "card_number", - "card_quota", - "apply_num", - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "카드로 결제하기, 더불어 간편 결제용으로 등록 가능.\n\n`subscribe.payments.onetime` 은 카드를 매개로 한 결제를 하고자 할 때 호출하는 API\n함수이다. 더하여 입력 값에 {@link IIamportSubscription.IOnetime.customer_uid } 를\n기입하는 경우, 결제에 사용한 카드를 그대로 간편 결제용 카드\n{@link IIamportSubscription } 로 등록해버린다.\n\n다만, 정히 간편 카드 등록과 결제를 동시에 하고 싶다면,\n`subscribe.payments.onetime` 에 {@link IIamportSubscription.IOnetime.customer_uid }\n를 더하기보다, {@link subscribe.customers.store } 와 {@link subscribe.payments.again }\n을 각각 호출하는 것을 권장한다. 그것이 예외적인 상황에 보다 안전하게 대처할 수 있기\n때문이다.\n\n더하여 `subscribe.payments.onetime` 은 클라이언트 어플리케이션이 아임포트가 제공하는\n결제 창을 그대로 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는 일은\n없을 것이다. 다만, 고객이 카드를 통하여 결제하는 상황을 시뮬레이션하기 위하여, 테스트\n자동화 프로그램 수준에서 사용될 수는 있다." - }, - { - "method": "post", - "path": "/subscribe/payments/again", - "name": "subscribe_payments_again_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트가 아닌 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "name": { - "description": "주문 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ], - "description": "통화 정보.", - "x-typia-required": false, - "x-typia-optional": true - }, - "tax_free": { - "description": "면세 공급가액.\n\n기본값은 0 로써, 알아서 amount 의 1/11 로써 부가세 처리됨.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "card_quota": { - "description": "할부 개월 수.\n\n일시불은 0.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "buyer_name": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_email": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "format": "email" - }, - "buyer_tel": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_addr": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_postcode": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "interest_free_by_merchant": { - "type": "boolean", - "description": "카드할부처리할 때, 할부이자가 발생하는 경우 (카드사 무이자 프로모션 제외).\n\n부과되는 할부이자를 고객대신 가맹점이 지불하고자 PG사와 계약된 경우(현재, 나이스페이먼츠만 지원됨)", - "x-typia-required": false, - "x-typia-optional": true - }, - "use_card_point": { - "type": "boolean", - "description": "승인요청시 카드사 포인트 차감하며 결제승인처리할지 flag.\n\nPG사 영업담당자와 계약 당시 사전 협의 필요(현재, 나이스페이먼츠만 지원됨)", - "x-typia-required": false, - "x-typia-optional": true - }, - "custom_data": { - "description": "임의 정보를 기재할 수 있다.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "notice_url": { - "description": "결제 성공시 통지될 Notification, 웹훅 URL.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "format": "url" - }, - "customer_uid": { - "description": "고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "merchant_uid", - "amount", - "name", - "customer_uid" - ], - "description": "간편 결제 카드로 결제 신청 입력 정보.", - "x-typia-jsDocTags": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "card_code": { - "description": "카드 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_name": { - "description": "카드 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "\\d{4}-\\d{4}-\\d{4}-\\d{4}" - }, - "card_quota": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "integer" - }, - "apply_num": { - "description": "카드사 승인번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pay_method": { - "type": "string", - "enum": [ - "card", - "samsung" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "card_code", - "card_name", - "card_number", - "card_quota", - "apply_num", - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "간편 결제에 등록된 카드로 결제하기.\n\n`subscribe.payments.again` 은 고객이 간편 결제에 등록한 카드로 결제를 진행하고자 할 때\n호출하는 API 함수이다. 이는 간편하고 불편하고를 떠나, 본질적으로 카드 결제의 일환이기에,\n리턴값은 일반적인 카드 결제 때와 동일한 {@link IIamportCardPayment } 이다.\n\n그리고 `subscribe.payments.again` 은 결제 수단 중 유일하게, 클라이언트 어플리케이션이\n아임포트가 제공하는 결체 창을 사용할 수 없어, 오직 귀하의 백엔드 서버가 아임포트의 API\n함수를 직접 호출해야하는 경우에 해당한다. 따라서 간편 결제에 관하여 아임포트 서버와\n연동하는 백엔드 서버 및 프론트 어플리케이션을 개발할 때, 반드시 이 상황에 대한 별도의\n설계 및 개발이 필요하니, 이 점을 염두에 두기 바란다." - } - ], - "errors": [], - "options": { - "keyword": true, - "separate": null - } -} \ No newline at end of file +{"openapi":"3.0.3","functions":[{"method":"get","path":"/subscribe/customers/{customer_uid}","name":"subscribe_customers_getByCustomer_uid","parameters":[{"type":"object","properties":{"customer_uid":{"type":"string","description":" 고객 (간편 결제 카드) 식별자 키"}}}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"pg_provider":{"type":"string"},"pg_id":{"type":"string"},"card_name":{"type":"string"},"card_code":{"type":"string"},"card_number":{"type":"string"},"card_type":{"type":"string"},"customer_name":{"type":"string","nullable":true},"customer_tel":{"type":"string","nullable":true},"customer_email":{"type":"string","nullable":true},"customer_addr":{"type":"string","nullable":true},"customer_postcode":{"type":"string","nullable":true},"inserted":{"type":"number"},"updated":{"type":"number"},"customer_uid":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함."}},"required":["pg_provider","pg_id","card_name","card_code","card_number","card_type","customer_name","customer_tel","customer_email","customer_addr","customer_postcode","inserted","updated","customer_uid"],"description":"간편 결제 카드 정보."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"간편 결제 카드 정보 조회하기.\n\n`subscribe.customers.at` 은 고객이 {@link create} 나 혹은 아임포트가 제공하는\n간편 결제 카드 등록 창을 이용하여 저장한 간편 결제 카드 정보를 조회하는 API\n함수이다."},{"method":"post","path":"/subscribe/customers/{customer_uid}","name":"subscribe_customers_postByCustomer_uid","parameters":[{"type":"object","properties":{"customer_uid":{"type":"string","description":" 고객 (간편 결제 카드) 식별자 키"},"body":{"type":"object","properties":{"card_number":{"type":"string","pattern":"\\d{4}-\\d{4}-\\d{4}-\\d{4}","title":"카드 번호","description":"카드 번호.\n\n형식: XXXX-XXXX-XXXX-XXXX"},"expiry":{"type":"string","pattern":"^([0-9]{4})-(0[1-9]|1[012])$","title":"카드 유효기간","description":"카드 유효기간.\n\n형식: YYYY-MM"},"birth":{"type":"string","pattern":"^(([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01]))|(\\d{10})$","title":"생년월일 YYMMDD 또는 사업자등록번호 10자리","description":"생년월일 YYMMDD 또는 사업자등록번호 10자리."},"pwd_2digit":{"type":"string","pattern":"\\d{2}","title":"카드 비밀번호 앞 두 자리","description":"카드 비밀번호 앞 두 자리."},"cvc":{"type":"string","pattern":"\\d{2}","title":"카드 인증번호 (카드 뒷면 3 자리)","description":"카드 인증번호 (카드 뒷면 3 자리)."},"customer_name":{"type":"string"},"customer_tel":{"type":"string"},"customer_email":{"type":"string","format":"email"},"customr_addr":{"type":"string"},"customer_postcode":{"type":"string"},"customer_uid":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함."}},"required":["card_number","expiry","birth","customer_uid"],"description":"간편 결제 카드 입력 정보."}}}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"pg_provider":{"type":"string"},"pg_id":{"type":"string"},"card_name":{"type":"string"},"card_code":{"type":"string"},"card_number":{"type":"string"},"card_type":{"type":"string"},"customer_name":{"type":"string","nullable":true},"customer_tel":{"type":"string","nullable":true},"customer_email":{"type":"string","nullable":true},"customer_addr":{"type":"string","nullable":true},"customer_postcode":{"type":"string","nullable":true},"inserted":{"type":"number"},"updated":{"type":"number"},"customer_uid":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함."}},"required":["pg_provider","pg_id","card_name","card_code","card_number","card_type","customer_name","customer_tel","customer_email","customer_addr","customer_postcode","inserted","updated","customer_uid"],"description":"간편 결제 카드 정보."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"간편 결제 카드 등록하기.\n\n`subscribe.customers.stoer` 는 고객이 자신의 카드를 서버에 등록해두고, 매번 결제가\n필요할 때마다 카드 정보를 반복 입력하는 일 없이, 간편하게 결제를 진행하고자 할 때\n사용하는 API 함수이다.\n\n참고로 `subscribe.customers.create` 는 클라이언트 어플리케이션이 아임포트가 제공하는\n간편 결제 카드 등록 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는\n일은 없을 것이다. 다만, 고객이 간편 결제 카드를 등록하는 상황을 시뮬레이션하기 위하여,\n테스트 자동화 프로그램 수준에서 사용될 수는 있다."},{"method":"delete","path":"/subscribe/customers/{customer_uid}","name":"subscribe_customers_eraseByCustomer_uid","parameters":[{"type":"object","properties":{"customer_uid":{"type":"string","description":" 고객 (간편 결제 카드) 식별자 키"}}}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"pg_provider":{"type":"string"},"pg_id":{"type":"string"},"card_name":{"type":"string"},"card_code":{"type":"string"},"card_number":{"type":"string"},"card_type":{"type":"string"},"customer_name":{"type":"string","nullable":true},"customer_tel":{"type":"string","nullable":true},"customer_email":{"type":"string","nullable":true},"customer_addr":{"type":"string","nullable":true},"customer_postcode":{"type":"string","nullable":true},"inserted":{"type":"number"},"updated":{"type":"number"},"customer_uid":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함."}},"required":["pg_provider","pg_id","card_name","card_code","card_number","card_type","customer_name","customer_tel","customer_email","customer_addr","customer_postcode","inserted","updated","customer_uid"],"description":"간편 결제 카드 정보."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"간편 결제 카드 삭제하기.\n\n간편 결제를 위하여 등록한 카드를 제거한다."},{"method":"post","path":"/subscribe/payments/onetime","name":"subscribe_payments_onetime_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"customer_uid":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함.\n\n이를 생략시 단순 결제로만 그치며, 카드 정보가 간편 결제용으로 등록되지 아니함."},"card_number":{"type":"string","pattern":"\\d{4}-\\d{4}-\\d{4}-\\d{4}","title":"카드 번호","description":"카드 번호.\n\n형식: XXXX-XXXX-XXXX-XXXX"},"expiry":{"type":"string","pattern":"^([0-9]{4})-(0[1-9]|1[012])$","title":"카드 유효기간","description":"카드 유효기간.\n\n형식: YYYY-MM"},"birth":{"type":"string","pattern":"^(([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01]))|(\\d{10})$","title":"생년월일 YYMMDD 또는 사업자등록번호 10자리","description":"생년월일 YYMMDD 또는 사업자등록번호 10자리."},"pwd_2digit":{"type":"string","pattern":"\\d{2}","title":"카드 비밀번호 앞 두 자리","description":"카드 비밀번호 앞 두 자리."},"cvc":{"type":"string","pattern":"\\d{2}","title":"카드 인증번호 (카드 뒷면 3 자리)","description":"카드 인증번호 (카드 뒷면 3 자리)."},"customer_name":{"type":"string"},"customer_tel":{"type":"string"},"customer_email":{"type":"string","format":"email"},"customr_addr":{"type":"string"},"customer_postcode":{"type":"string"},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트가 아닌 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"name":{"type":"string","title":"주문 이름","description":"주문 이름."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"],"title":"통화 정보","description":"통화 정보."},"tax_free":{"type":"number","title":"면세 공급가액","description":"면세 공급가액.\n\n기본값은 0 로써, 알아서 amount 의 1/11 로써 부가세 처리됨."},"card_quota":{"type":"number","title":"할부 개월 수","description":"할부 개월 수.\n\n일시불은 0."},"buyer_name":{"type":"string"},"buyer_email":{"type":"string","format":"email"},"buyer_tel":{"type":"string"},"buyer_addr":{"type":"string"},"buyer_postcode":{"type":"string"},"interest_free_by_merchant":{"type":"boolean","title":"카드할부처리할 때, 할부이자가 발생하는 경우 (카드사 무이자 프로모션 제외)","description":"카드할부처리할 때, 할부이자가 발생하는 경우 (카드사 무이자 프로모션 제외).\n\n부과되는 할부이자를 고객대신 가맹점이 지불하고자 PG사와 계약된 경우(현재, 나이스페이먼츠만 지원됨)"},"use_card_point":{"type":"boolean","title":"승인요청시 카드사 포인트 차감하며 결제승인처리할지 flag","description":"승인요청시 카드사 포인트 차감하며 결제승인처리할지 flag.\n\nPG사 영업담당자와 계약 당시 사전 협의 필요(현재, 나이스페이먼츠만 지원됨)"},"custom_data":{"type":"string","title":"임의 정보를 기재할 수 있다","description":"임의 정보를 기재할 수 있다."},"notice_url":{"type":"string","format":"uri","title":"결제 성공시 통지될 Notification, 웹훅 URL","description":"결제 성공시 통지될 Notification, 웹훅 URL."}},"required":["card_number","expiry","birth","merchant_uid","amount","name"],"description":"결제 신청 입력 정보."}}}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"card_code":{"type":"string","title":"카드 식별자 코드","description":"카드 식별자 코드."},"card_name":{"type":"string","title":"카드 이름","description":"카드 이름."},"card_number":{"type":"string","pattern":"\\d{4}-\\d{4}-\\d{4}-\\d{4}","title":"카드 번호","description":"카드 번호."},"card_quota":{"type":"integer","title":"할부 개월 수","description":"할부 개월 수."},"apply_num":{"type":"string","title":"카드사 승인번호","description":"카드사 승인번호."},"pay_method":{"type":"string","enum":["card","samsung"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["card_code","card_name","card_number","card_quota","apply_num","pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"카드 결제 정보."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"카드로 결제하기, 더불어 간편 결제용으로 등록 가능.\n\n`subscribe.payments.onetime` 은 카드를 매개로 한 결제를 하고자 할 때 호출하는 API\n함수이다. 더하여 입력 값에 {@link IIamportSubscription.IOnetime.customer_uid} 를\n기입하는 경우, 결제에 사용한 카드를 그대로 간편 결제용 카드\n{@link IIamportSubscription} 로 등록해버린다.\n\n다만, 정히 간편 카드 등록과 결제를 동시에 하고 싶다면,\n`subscribe.payments.onetime` 에 {@link IIamportSubscription.IOnetime.customer_uid}\n를 더하기보다, {@link subscribe.customers.create} 와 {@link subscribe.payments.again}\n을 각각 호출하는 것을 권장한다. 그것이 예외적인 상황에 보다 안전하게 대처할 수 있기\n때문이다.\n\n더하여 `subscribe.payments.onetime` 은 클라이언트 어플리케이션이 아임포트가 제공하는\n결제 창을 그대로 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는 일은\n없을 것이다. 다만, 고객이 카드를 통하여 결제하는 상황을 시뮬레이션하기 위하여, 테스트\n자동화 프로그램 수준에서 사용될 수는 있다."},{"method":"post","path":"/subscribe/payments/again","name":"subscribe_payments_again_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트가 아닌 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"name":{"type":"string","title":"주문 이름","description":"주문 이름."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"],"title":"통화 정보","description":"통화 정보."},"tax_free":{"type":"number","title":"면세 공급가액","description":"면세 공급가액.\n\n기본값은 0 로써, 알아서 amount 의 1/11 로써 부가세 처리됨."},"card_quota":{"type":"number","title":"할부 개월 수","description":"할부 개월 수.\n\n일시불은 0."},"buyer_name":{"type":"string"},"buyer_email":{"type":"string","format":"email"},"buyer_tel":{"type":"string"},"buyer_addr":{"type":"string"},"buyer_postcode":{"type":"string"},"interest_free_by_merchant":{"type":"boolean","title":"카드할부처리할 때, 할부이자가 발생하는 경우 (카드사 무이자 프로모션 제외)","description":"카드할부처리할 때, 할부이자가 발생하는 경우 (카드사 무이자 프로모션 제외).\n\n부과되는 할부이자를 고객대신 가맹점이 지불하고자 PG사와 계약된 경우(현재, 나이스페이먼츠만 지원됨)"},"use_card_point":{"type":"boolean","title":"승인요청시 카드사 포인트 차감하며 결제승인처리할지 flag","description":"승인요청시 카드사 포인트 차감하며 결제승인처리할지 flag.\n\nPG사 영업담당자와 계약 당시 사전 협의 필요(현재, 나이스페이먼츠만 지원됨)"},"custom_data":{"type":"string","title":"임의 정보를 기재할 수 있다","description":"임의 정보를 기재할 수 있다."},"notice_url":{"type":"string","format":"uri","title":"결제 성공시 통지될 Notification, 웹훅 URL","description":"결제 성공시 통지될 Notification, 웹훅 URL."},"customer_uid":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함."}},"required":["merchant_uid","amount","name","customer_uid"],"description":"간편 결제 카드로 결제 신청 입력 정보."}}}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"card_code":{"type":"string","title":"카드 식별자 코드","description":"카드 식별자 코드."},"card_name":{"type":"string","title":"카드 이름","description":"카드 이름."},"card_number":{"type":"string","pattern":"\\d{4}-\\d{4}-\\d{4}-\\d{4}","title":"카드 번호","description":"카드 번호."},"card_quota":{"type":"integer","title":"할부 개월 수","description":"할부 개월 수."},"apply_num":{"type":"string","title":"카드사 승인번호","description":"카드사 승인번호."},"pay_method":{"type":"string","enum":["card","samsung"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["card_code","card_name","card_number","card_quota","apply_num","pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"카드 결제 정보."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"간편 결제에 등록된 카드로 결제하기.\n\n`subscribe.payments.again` 은 고객이 간편 결제에 등록한 카드로 결제를 진행하고자 할 때\n호출하는 API 함수이다. 이는 간편하고 불편하고를 떠나, 본질적으로 카드 결제의 일환이기에,\n리턴값은 일반적인 카드 결제 때와 동일한 {@link IIamportCardPayment} 이다.\n\n그리고 `subscribe.payments.again` 은 결제 수단 중 유일하게, 클라이언트 어플리케이션이\n아임포트가 제공하는 결체 창을 사용할 수 없어, 오직 귀하의 백엔드 서버가 아임포트의 API\n함수를 직접 호출해야하는 경우에 해당한다. 따라서 간편 결제에 관하여 아임포트 서버와\n연동하는 백엔드 서버 및 프론트 어플리케이션을 개발할 때, 반드시 이 상황에 대한 별도의\n설계 및 개발이 필요하니, 이 점을 염두에 두기 바란다."},{"method":"get","path":"/certifications/{imp_uid}","name":"certifications_getByImp_uid","parameters":[{"type":"object","properties":{"imp_uid":{"type":"string","description":" 대상 본인인증 정보의 {@link IIamportCertification.imp_uid}"}}}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"imp_uid":{"type":"string","title":"아임포트가 발급해 준 식별자 번호","description":"아임포트가 발급해 준 식별자 번호."},"merchant_uid":{"type":"string","nullable":true,"title":"서비스로부터의 식별자 키","description":"서비스로부터의 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","title":"본인인증대상자 성명","description":"본인인증대상자 성명."},"gender":{"type":"string","title":"성별","description":"성별."},"birth":{"type":"number","title":"생년월일","description":"생년월일.\n\n리눅스 타임이 쓰인다."},"birthday":{"type":"string","pattern":"^([0-9]{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$","title":"생년월일, YYYYMMDD 형식","description":"생년월일, YYYYMMDD 형식."},"foreigner":{"type":"boolean","title":"외국인 여부","description":"외국인 여부."},"phone":{"type":"string","title":"본인인증 대상자 핸드폰 번호","description":"본인인증 대상자 핸드폰 번호."},"carrier":{"type":"string","enum":["SKT","KT","LGT"],"title":"본인인증 대상자 통신사 코드","description":"본인인증 대상자 통신사 코드."},"certified":{"type":"boolean","title":"OTP 인증 여부","description":"OTP 인증 여부."},"certified_at":{"type":"number","title":"OTP 인증 일시","description":"OTP 인증 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"unique_key":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"unique_in_site":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"pg_tid":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"pg_provider":{"type":"string","title":"PG 제공자","description":"PG 제공자."},"origin":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"__otp":{"type":"string","title":"(테스트 전용) OTP 코드","description":"(테스트 전용) OTP 코드.\n\n오직 `fake-iamport-server` 에서만 쓰이는 속성으로써, 본인인증을 시뮬레이션할 때,\n어떠한 OTP 코드가 발급되었는 지를 확인하기 위하여 사용된다. 이를 이용하여\n{@link functional.certifications.otp.confirm} 함수를 호출하면, 본인인증을 완료할\n수 있다."}},"required":["imp_uid","merchant_uid","name","gender","birth","birthday","foreigner","phone","carrier","certified","certified_at","unique_key","unique_in_site","pg_tid","pg_provider","origin"],"description":"본인 인증 내역.\n\n`IIamportCertification` 은 아임포트의 본인인증 정보를 형상화한 자료구조 인터페이스이다.\n\n단, `IIamportCertification` 레코드의 존재가 곧 본인인증의 완결을 뜻하는 것은 아니다.\n{@link IIamportCertification.certified} 값이 `true` 여야만이 비로소, 본인인증\n대상자가 자신의 핸드폰 번호로 전송된 OTP 를 아임포트의 본인인증 팝업창에 정확히 적어,\n본인인증을 완료했음을 의미한다."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"본인인증 정보 열람하기.\n\n`certiciations.at` 은 본인인증 정보를 열람할 때 사용하는 API 함수이다.\n\n다만 이 API 함수를 통하여 열람한 본인인증 정보 {@link IIamportCertification} 이\n곧 OTP 인증까지 마쳐 본인인증을 모두 마친 레코드라는 보장은 없다. 본인인증의 완결\n여부는 오직, {@link IIamportCertification.certified} 값을 직접 검사해봐야만 알\n수 있기 때문이다."},{"method":"delete","path":"/certifications/{imp_uid}","name":"certifications_eraseByImp_uid","parameters":[{"type":"object","properties":{"imp_uid":{"type":"string","description":" 대상 본인인증 정보의 {@link IIamportCertification.imp_uid}"}}}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"imp_uid":{"type":"string","title":"아임포트가 발급해 준 식별자 번호","description":"아임포트가 발급해 준 식별자 번호."},"merchant_uid":{"type":"string","nullable":true,"title":"서비스로부터의 식별자 키","description":"서비스로부터의 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","title":"본인인증대상자 성명","description":"본인인증대상자 성명."},"gender":{"type":"string","title":"성별","description":"성별."},"birth":{"type":"number","title":"생년월일","description":"생년월일.\n\n리눅스 타임이 쓰인다."},"birthday":{"type":"string","pattern":"^([0-9]{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$","title":"생년월일, YYYYMMDD 형식","description":"생년월일, YYYYMMDD 형식."},"foreigner":{"type":"boolean","title":"외국인 여부","description":"외국인 여부."},"phone":{"type":"string","title":"본인인증 대상자 핸드폰 번호","description":"본인인증 대상자 핸드폰 번호."},"carrier":{"type":"string","enum":["SKT","KT","LGT"],"title":"본인인증 대상자 통신사 코드","description":"본인인증 대상자 통신사 코드."},"certified":{"type":"boolean","title":"OTP 인증 여부","description":"OTP 인증 여부."},"certified_at":{"type":"number","title":"OTP 인증 일시","description":"OTP 인증 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"unique_key":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"unique_in_site":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"pg_tid":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"pg_provider":{"type":"string","title":"PG 제공자","description":"PG 제공자."},"origin":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"__otp":{"type":"string","title":"(테스트 전용) OTP 코드","description":"(테스트 전용) OTP 코드.\n\n오직 `fake-iamport-server` 에서만 쓰이는 속성으로써, 본인인증을 시뮬레이션할 때,\n어떠한 OTP 코드가 발급되었는 지를 확인하기 위하여 사용된다. 이를 이용하여\n{@link functional.certifications.otp.confirm} 함수를 호출하면, 본인인증을 완료할\n수 있다."}},"required":["imp_uid","merchant_uid","name","gender","birth","birthday","foreigner","phone","carrier","certified","certified_at","unique_key","unique_in_site","pg_tid","pg_provider","origin"],"description":"본인 인증 내역.\n\n`IIamportCertification` 은 아임포트의 본인인증 정보를 형상화한 자료구조 인터페이스이다.\n\n단, `IIamportCertification` 레코드의 존재가 곧 본인인증의 완결을 뜻하는 것은 아니다.\n{@link IIamportCertification.certified} 값이 `true` 여야만이 비로소, 본인인증\n대상자가 자신의 핸드폰 번호로 전송된 OTP 를 아임포트의 본인인증 팝업창에 정확히 적어,\n본인인증을 완료했음을 의미한다."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"본인인증 정보 삭제하기."},{"method":"post","path":"/certifications/otp/request","name":"certifications_otp_request_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"name":{"type":"string","title":"본인인증대상자 성명","description":"본인인증대상자 성명."},"phone":{"type":"string","title":"본인인증 대상자 핸드폰 번호","description":"본인인증 대상자 핸드폰 번호.\n\n핸드폰 번호에 \"-\" 값이 들어가던 아니던 상관 없음.\n\n다만, 내부적으로는 \"-\" 값을 제거하여 처리한다."},"birth":{"type":"string","pattern":"^([0-9]{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$","title":"생년월일","description":"생년월일.\n\nYYYYMMDD 형식."},"gender_digit":{"type":"string","title":"주민등록 뒷부분 첫 자리","description":"주민등록 뒷부분 첫 자리."},"carrier":{"type":"string","enum":["SKT","KT","LGT"],"title":"본인인증 대상자 통신사 코드","description":"본인인증 대상자 통신사 코드."},"is_mvno":{"type":"boolean","title":"알뜰폰 여부","description":"알뜰폰 여부."},"commpany":{"type":"string","title":"가맹점 서비스 명칭 또는 domain URL","description":"가맹점 서비스 명칭 또는 domain URL.\n\nKISA 에서 대상자에게 발송하는 SMS에 안내될 서비스 명칭."},"merchant_uid":{"type":"string","title":"귀사 서비스에서의 본인인증 식별자 키","description":"귀사 서비스에서의 본인인증 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"pg":{"type":"string","title":"PG 사 구분자","description":"PG 사 구분자.\n\n다날 상점아이디를 2개 이상 동시에 사용하시려는 경우에 설정하면 된다.\n\n**danal.{상점아이디}** 형태로 지정."}},"required":["name","phone","birth","gender_digit","carrier"],"description":"본인 인증 입력 정보."}}}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"imp_uid":{"type":"string","title":"본인인증정보의 식별자 키","description":"본인인증정보의 식별자 키."}},"required":["imp_uid"],"description":"본인인증 정보의 접근자 구조체."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"본인인증 요청하기.\n\n`certifications.otp.request` 는 아임포트 서버에 본인인증을 요청하는 API 함수이다.\n이 API 를 호출하면 본인인증 대상자의 핸드폰으로 OTP 문자가 전송되며, 본인인증\n대상자가 {@link certifications.otp.confirm} 을 통하여 이 OTP 번호를 정확히\n입력함으로써, 본인인증이 완결된다.\n\n또한 본인인증 대상자가 자신의 핸드폰으로 전송된 OTP 문자를 입력하기 전에도,\n여전히해당 본인인증 내역은 {@link certifications.at} 함수를 통하여 조회할 수 있다.\n다만, 이 때 리턴되는 {@link IIamportCertification} 에서 인증의 완결 여부를\n지칭하는 {@link IIamportCertification.certified} 값은 `false` 이다."},{"method":"post","path":"/certifications/otp/confirm/{imp_uid}","name":"certifications_otp_confirm_postByImp_uid","parameters":[{"type":"object","properties":{"imp_uid":{"type":"string","description":" 대상 본인인증 정보의 {@link IIamportCertification.imp_uid}"},"body":{"type":"object","properties":{"otp":{"type":"string","title":"SMS 로 전송된 본인인증 번호","description":"SMS 로 전송된 본인인증 번호."}},"required":["otp"],"description":"본인인증 승인을 위한 입력 정보."}}}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"imp_uid":{"type":"string","title":"아임포트가 발급해 준 식별자 번호","description":"아임포트가 발급해 준 식별자 번호."},"merchant_uid":{"type":"string","nullable":true,"title":"서비스로부터의 식별자 키","description":"서비스로부터의 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","title":"본인인증대상자 성명","description":"본인인증대상자 성명."},"gender":{"type":"string","title":"성별","description":"성별."},"birth":{"type":"number","title":"생년월일","description":"생년월일.\n\n리눅스 타임이 쓰인다."},"birthday":{"type":"string","pattern":"^([0-9]{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$","title":"생년월일, YYYYMMDD 형식","description":"생년월일, YYYYMMDD 형식."},"foreigner":{"type":"boolean","title":"외국인 여부","description":"외국인 여부."},"phone":{"type":"string","title":"본인인증 대상자 핸드폰 번호","description":"본인인증 대상자 핸드폰 번호."},"carrier":{"type":"string","enum":["SKT","KT","LGT"],"title":"본인인증 대상자 통신사 코드","description":"본인인증 대상자 통신사 코드."},"certified":{"type":"boolean","title":"OTP 인증 여부","description":"OTP 인증 여부."},"certified_at":{"type":"number","title":"OTP 인증 일시","description":"OTP 인증 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"unique_key":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"unique_in_site":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"pg_tid":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"pg_provider":{"type":"string","title":"PG 제공자","description":"PG 제공자."},"origin":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"__otp":{"type":"string","title":"(테스트 전용) OTP 코드","description":"(테스트 전용) OTP 코드.\n\n오직 `fake-iamport-server` 에서만 쓰이는 속성으로써, 본인인증을 시뮬레이션할 때,\n어떠한 OTP 코드가 발급되었는 지를 확인하기 위하여 사용된다. 이를 이용하여\n{@link functional.certifications.otp.confirm} 함수를 호출하면, 본인인증을 완료할\n수 있다."}},"required":["imp_uid","merchant_uid","name","gender","birth","birthday","foreigner","phone","carrier","certified","certified_at","unique_key","unique_in_site","pg_tid","pg_provider","origin"],"description":"본인 인증 내역.\n\n`IIamportCertification` 은 아임포트의 본인인증 정보를 형상화한 자료구조 인터페이스이다.\n\n단, `IIamportCertification` 레코드의 존재가 곧 본인인증의 완결을 뜻하는 것은 아니다.\n{@link IIamportCertification.certified} 값이 `true` 여야만이 비로소, 본인인증\n대상자가 자신의 핸드폰 번호로 전송된 OTP 를 아임포트의 본인인증 팝업창에 정확히 적어,\n본인인증을 완료했음을 의미한다."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"본인인증 시 발급된 OTP 코드 입력하기.\n\n`certifications.otp.confirm` 는 {@link certifications.otp.request} 를 통하여\n발급된 본인인증 건에 대하여, 본인인증 대상자의 휴대폰으로 전송된 OTP 번호를\n검증하고, 입력한 OTP 번호가 맞거든 해당 본인인증 건을 승인하여 완료 처리해주는\nAPI 함수이다.\n\n이처럼 본인인증을 완료하거든, 해당 본인인증 건 {@link IIamportCertification} 의\n{@link IIamportCertification.certified} 값이 비로소 `true` 로 변경되어,\n비로소 완결된다."},{"method":"post","path":"/internal/webhook","name":"internal_webhook_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"status":{"type":"string","enum":["paid","ready","failed","cancelled"],"title":"현재 상태","description":"현재 상태."}},"required":["imp_uid","merchant_uid","status"],"description":"웹훅 데이터."}}}],"description":"웹훅 이벤트 더미 리스너.\n\n`internal.webhook` 은 실제 아임포트의 서버에는 존재하지 않는 API 로써,\n`fake-impoart-server` 의 {@link Configuration.WEBHOOK_URL} 에 아무런 URL 을 설정하지\n않으면, `fake-iamport-server` 로부터 발생하는 모든 종류의 웹훅 이벤트는 이 곳으로 전달되어\n무의미하게 사라진다.\n\n따라서 `fake-iamport-server` 를 사용하여 아임포트 서버와의 연동을 미리 검증코자 할 때는,\n반드시 {@link Configuration.WEBHOOK_URL} 를 설정하여 웹훅 이벤트가 귀하의 백엔드 서버로\n제대로 전달되도록 하자."},{"method":"put","path":"/internal/deposit/{imp_uid}","name":"internal_deposit_putByImp_uid","parameters":[{"type":"object","properties":{"imp_uid":{"type":"string","description":" 대상 결제의 {@link IIamportVBankPayment.imp_uid }"}}}],"description":"가상 계좌에 입금하기.\n\n`internal.deposit` 은 실제 아임포트 결제 서버에는 존재하지 않는 API 로써, 가상 계좌\n결제를 신청한 고객이, 이후 가상 계좌에 목표 금액을 입금하는 상황을 시뮬레이션 할 수 있는\n함수이다.\n\n즉, `internal.deposit` 는 고객이 스스로에게 가상으로 발급된 계좌에 입금을 하고, 그에 따라\n아임포트 서버에서 webhook 이벤트가 발생, 이를 귀하의 백엔드 서버로 전송하는 일련의 상황을\n시뮬레이션하기 위하여 설계된 테스트 함수다."},{"method":"get","path":"/payments/{imp_uid}","name":"payments_getByImp_uid","parameters":[{"type":"object","properties":{"imp_uid":{"type":"string","description":" 대상 결제 기록의 {@link IIamportPayment.imp_uid}"},"query":{"type":"object","properties":{"extension":{"type":"boolean","title":"페이팔의 경우, 이 값을 `true` 로 할 것","description":"페이팔의 경우, 이 값을 `true` 로 할 것."}},"required":[]}}}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"oneOf":[{"type":"object","properties":{"card_code":{"type":"string","title":"카드 식별자 코드","description":"카드 식별자 코드."},"card_name":{"type":"string","title":"카드 이름","description":"카드 이름."},"card_number":{"type":"string","pattern":"\\d{4}-\\d{4}-\\d{4}-\\d{4}","title":"카드 번호","description":"카드 번호."},"card_quota":{"type":"integer","title":"할부 개월 수","description":"할부 개월 수."},"apply_num":{"type":"string","title":"카드사 승인번호","description":"카드사 승인번호."},"pay_method":{"type":"string","enum":["card","samsung"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["card_code","card_name","card_number","card_quota","apply_num","pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"카드 결제 정보."},{"type":"object","properties":{"bank_code":{"type":"string","title":"은행 식별자 코드","description":"은행 식별자 코드."},"bank_name":{"type":"string","title":"은행 이름","description":"은행 이름."},"pay_method":{"type":"string","enum":["trans"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["bank_code","bank_name","pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"계좌 이체 결제 정보."},{"type":"object","properties":{"vbank_code":{"type":"string","title":"가상 계좌 식별자 코드","description":"가상 계좌 식별자 코드."},"vbank_name":{"type":"string","description":"가상 게좌 이름"},"vbank_num":{"type":"string","description":"가상 계좌 번호"},"vbank_holder":{"type":"string","title":"가상 계좌 예금주","description":"가상 계좌 예금주."},"vbank_date":{"type":"number","title":"가상 계좌 입금 만료 기한","description":"가상 계좌 입금 만료 기한."},"vbank_issued_at":{"type":"number","title":"가상 계좌 개설 일시","description":"가상 계좌 개설 일시."},"pay_method":{"type":"string","enum":["vbank"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["vbank_code","vbank_name","vbank_num","vbank_holder","vbank_date","vbank_issued_at","pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"가상 계좌 결제 정보."},{"type":"object","properties":{"pay_method":{"type":"string","enum":["phone","kpay","kakaopay","payco","lpay","ssgpay","tosspay","cultureland","smartculture","happymoney","booknlife","point"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"결제 기본 (공통) 정보."}],"description":"결제 정보.\n\n`IIamportPayment` 는 아임포트의 결제 정보를 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.pay_method === \"card\")\n payment.card_number; // payment be IIamportCardPayment\n```"}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"결제 기록 열람하기.\n\n아임포트를 통하여 발생한 결제 기록을 열람한다."},{"method":"post","path":"/payments/cancel","name":"payments_cancel_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"amount":{"type":"number","title":"취소 금액, 부분 취소도 가능하다","description":"취소 금액, 부분 취소도 가능하다.\n\n누락시 전액 취소."},"checksum":{"type":"number","minimum":0,"nullable":true,"title":"취소 트랜잭션 수행 전, 현재 시점의 취소 가능한 잔액","description":"취소 트랜잭션 수행 전, 현재 시점의 취소 가능한 잔액.\n\nAPI요청자가 기록하고 있는 취소가능 잔액과 아임포트가 기록하고 있는 취소가능 잔액이\n일치하는지 사전에 검증하고, 검증에 실패하면 트랜잭션을 수행하지 않는다.\n\n`null` 인 경우에는 검증 프로세스를 생략."},"reason":{"type":"string","title":"취소 사유","description":"취소 사유."},"tax_free":{"type":"number","title":"취소요청금액 중 면세금액","description":"취소요청금액 중 면세금액."},"refund_holder":{"type":"string","title":"환불계좌 예금주","description":"환불계좌 예금주."},"refund_bank":{"type":"string","title":"환불계좌 은행 코드","description":"환불계좌 은행 코드."},"refund_account":{"type":"string","title":"환불계좌 계좌번호","description":"환불계좌 계좌번호."},"refund_tel":{"type":"string","description":"환불계좌 예금주 연락처"}},"required":["imp_uid","merchant_uid","checksum","reason"],"description":"결제 취소 입력 정보."}}}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"oneOf":[{"type":"object","properties":{"card_code":{"type":"string","title":"카드 식별자 코드","description":"카드 식별자 코드."},"card_name":{"type":"string","title":"카드 이름","description":"카드 이름."},"card_number":{"type":"string","pattern":"\\d{4}-\\d{4}-\\d{4}-\\d{4}","title":"카드 번호","description":"카드 번호."},"card_quota":{"type":"integer","title":"할부 개월 수","description":"할부 개월 수."},"apply_num":{"type":"string","title":"카드사 승인번호","description":"카드사 승인번호."},"pay_method":{"type":"string","enum":["card","samsung"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["card_code","card_name","card_number","card_quota","apply_num","pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"카드 결제 정보."},{"type":"object","properties":{"bank_code":{"type":"string","title":"은행 식별자 코드","description":"은행 식별자 코드."},"bank_name":{"type":"string","title":"은행 이름","description":"은행 이름."},"pay_method":{"type":"string","enum":["trans"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["bank_code","bank_name","pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"계좌 이체 결제 정보."},{"type":"object","properties":{"vbank_code":{"type":"string","title":"가상 계좌 식별자 코드","description":"가상 계좌 식별자 코드."},"vbank_name":{"type":"string","description":"가상 게좌 이름"},"vbank_num":{"type":"string","description":"가상 계좌 번호"},"vbank_holder":{"type":"string","title":"가상 계좌 예금주","description":"가상 계좌 예금주."},"vbank_date":{"type":"number","title":"가상 계좌 입금 만료 기한","description":"가상 계좌 입금 만료 기한."},"vbank_issued_at":{"type":"number","title":"가상 계좌 개설 일시","description":"가상 계좌 개설 일시."},"pay_method":{"type":"string","enum":["vbank"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["vbank_code","vbank_name","vbank_num","vbank_holder","vbank_date","vbank_issued_at","pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"가상 계좌 결제 정보."},{"type":"object","properties":{"pay_method":{"type":"string","enum":["phone","kpay","kakaopay","payco","lpay","ssgpay","tosspay","cultureland","smartculture","happymoney","booknlife","point"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"결제 기본 (공통) 정보."}],"description":"결제 정보.\n\n`IIamportPayment` 는 아임포트의 결제 정보를 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.pay_method === \"card\")\n payment.card_number; // payment be IIamportCardPayment\n```"}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"결제 취소하기.\n\n만약 가상 계좌를 통한 결제였다면, 반드시 환불 계좌 정보를 입력해줘야 한다."},{"method":"get","path":"/receipts/{imp_uid}","name":"receipts_getByImp_uid","parameters":[{"type":"object","properties":{"imp_uid":{"type":"string","description":" 귀속 결제의 {@link IIamportPayment.imp_uid}"}}}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"imp_uid":{"type":"string","title":"귀속 결제의 {@link IIamportPayment.imp_uid}","description":"귀속 결제의 {@link IIamportPayment.imp_uid}."},"receipt_uid":{"type":"string","title":"현금 영수증의 고유 식별자 ID","description":"현금 영수증의 고유 식별자 ID."},"apply_num":{"type":"string","title":"승인 번호","description":"승인 번호."},"type":{"type":"string","enum":["person","company"],"description":"현금영수증 발행 타입 (대상)."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"receipt_url":{"type":"string","format":"uri","title":"현금영수증 조회 URL","description":"현금영수증 조회 URL."},"applied_at":{"type":"number","title":"현금영수증 발행 시간","description":"현금영수증 발행 시간."},"cancelled_at":{"type":"number","title":"현금영수증 취소 시간","description":"현금영수증 취소 시간.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."}},"required":["imp_uid","receipt_uid","apply_num","type","amount","vat","receipt_url","applied_at","cancelled_at"],"description":"현금 영수증 정보."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"현금 영수증 조회하기."},{"method":"post","path":"/receipts/{imp_uid}","name":"receipts_postByImp_uid","parameters":[{"type":"object","properties":{"imp_uid":{"type":"string","description":" 귀속 결제의 {@link IIamportPayment.imp_uid}"},"body":{"type":"object","properties":{"imp_uid":{"type":"string","title":"귀속 결제의 {@link IIamportPayment.imp_uid}","description":"귀속 결제의 {@link IIamportPayment.imp_uid}."},"identifier":{"type":"string","title":"현금영수증 발생대상 식별정보","description":"현금영수증 발생대상 식별정보.\n\n - 국세청현금영수증카드\n - 휴대폰번호\n - 주민등록번호\n - 사업자등록번호"},"identifier_type":{"type":"string","enum":["phone","person","business","taxcard"],"title":"현금영수증 발행대상 유형","description":"현금영수증 발행대상 유형.\n\n - person: 주민등록번호\n - business: 사업자등록번호\n - phone: 휴대폰번호\n - taxcard: 국세청현금영수증카드\n\n일부 PG 사의 경우 이 항목이 없어 된다는데, 어지간하면 그냥 쓰기 바람."},"type":{"type":"string","enum":["person","company"],"title":"현금영수증 발행 타입 (대상)","description":"현금영수증 발행 타입 (대상).\n\n누락시 person 이 사용됨."},"buyer_name":{"type":"string","title":"구매자 이름","description":"구매자 이름.\n\n형금영수증 발행건 사후 추적을 위해 가급 입력하기 바람."},"buyer_email":{"type":"string","title":"구매자 이메일","description":"구매자 이메일."},"buyer_tel":{"type":"string","title":"구매자 전화번호","description":"구매자 전화번호.\n\n현금영수증 발행건 사후 추적을 위해 가급 입력하기 바람."},"tax_free":{"type":"number","title":"면세 금액","description":"면세 금액."}},"required":["imp_uid","identifier"],"description":"현금영수증 입력 정보."}}}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"imp_uid":{"type":"string","title":"귀속 결제의 {@link IIamportPayment.imp_uid}","description":"귀속 결제의 {@link IIamportPayment.imp_uid}."},"receipt_uid":{"type":"string","title":"현금 영수증의 고유 식별자 ID","description":"현금 영수증의 고유 식별자 ID."},"apply_num":{"type":"string","title":"승인 번호","description":"승인 번호."},"type":{"type":"string","enum":["person","company"],"description":"현금영수증 발행 타입 (대상)."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"receipt_url":{"type":"string","format":"uri","title":"현금영수증 조회 URL","description":"현금영수증 조회 URL."},"applied_at":{"type":"number","title":"현금영수증 발행 시간","description":"현금영수증 발행 시간."},"cancelled_at":{"type":"number","title":"현금영수증 취소 시간","description":"현금영수증 취소 시간.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."}},"required":["imp_uid","receipt_uid","apply_num","type","amount","vat","receipt_url","applied_at","cancelled_at"],"description":"현금 영수증 정보."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"현금 영수증 발행하기."},{"method":"delete","path":"/receipts/{imp_uid}","name":"receipts_eraseByImp_uid","parameters":[{"type":"object","properties":{"imp_uid":{"type":"string","description":" 귀속 결제의 {@link IIamportPayment.imp_uid}"}}}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"imp_uid":{"type":"string","title":"귀속 결제의 {@link IIamportPayment.imp_uid}","description":"귀속 결제의 {@link IIamportPayment.imp_uid}."},"receipt_uid":{"type":"string","title":"현금 영수증의 고유 식별자 ID","description":"현금 영수증의 고유 식별자 ID."},"apply_num":{"type":"string","title":"승인 번호","description":"승인 번호."},"type":{"type":"string","enum":["person","company"],"description":"현금영수증 발행 타입 (대상)."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"receipt_url":{"type":"string","format":"uri","title":"현금영수증 조회 URL","description":"현금영수증 조회 URL."},"applied_at":{"type":"number","title":"현금영수증 발행 시간","description":"현금영수증 발행 시간."},"cancelled_at":{"type":"number","title":"현금영수증 취소 시간","description":"현금영수증 취소 시간.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."}},"required":["imp_uid","receipt_uid","apply_num","type","amount","vat","receipt_url","applied_at","cancelled_at"],"description":"현금 영수증 정보."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"현금 영수증 취소하기."},{"method":"post","path":"/users/getToken","name":"users_getToken_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"imp_key":{"type":"string","title":"API 키","description":"API 키."},"imp_secret":{"type":"string","title":"Secret 키","description":"Secret 키."}},"required":["imp_key","imp_secret"],"description":"아임포트에서 부여해 준 API 및 secret 키."}}}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"now":{"type":"number","title":"토큰 발행 시간","description":"토큰 발행 시간."},"expired_at":{"type":"number","title":"토큰 만료 시간","description":"토큰 만료 시간.\n\n리눅스 타임이 기준이며, 이를 JS 에서 사용하려거든, 아래와 같이 변환해야 한다.\n\n```typescript\nnew Date(user.expired_at * 1_000);\n```"},"access_token":{"type":"string","title":"유저 인증 토큰","description":"유저 인증 토큰."}},"required":["now","expired_at","access_token"],"description":"아임포트 유저 인증 정보.\n\n아임포트는 고객사에게 API 및 secret 키 정보, {@link IIamportUser.IAccessor} 를 발급해준다.\n\n하지만 이를 곧장 아임포트의 유저 인증에 사용할 수는 없고, 해당 API 및 secret 키를 토대로 유저\n인증 토큰을 발급받아야 하는데, 이 유저 인증 토큰에는 하필이면 만로 시간이라는 게 존재한다.\n`IIamportUser` 는 바로 이러한 유저 인증 토큰 및 그것의 만료 시간을 형상화한 자료구조\n인터페이스이다.\n\n더하여 이처럼 만료 시간이 존재하는 아임포트의 유저 인증 토큰의 특성상, 이것의 만료 시간이\n초과되지 않도록 관리하는 것은 매우 힘든 일이다. 이에 `iamport-server-api` 에서는 아임포트\n유저 인증 토큰이 만료될 때마다 자동 갱신해주는, {@link IamportConnector} 클래스를 제공한다."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"유저 인증 토큰 발행하기.\n\n아임포트에 가입하여 부여받은 API 및 secret 키를 토대로, 유저 인증 토큰을 발행한다.\n\n단, 아임포트가 발급해주는 유저 인증 토큰에는 유효 시간 {@link IIamportUser.expired_at}\n이 있어, 해당 시간이 지나거든 기 발급 토큰이 만료되어 더 이상 쓸 수 없게 된다. 때문에\n아임포트의 이러한 시간 제한에 구애받지 않고 자유로이 아임포트의 API 를 이용하고 싶다면,\n`iamport-server-api` 에서 제공해주는 {@link IamportConnector} 를 활용하도록 하자."},{"method":"post","path":"/vbanks","name":"vbanks_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"amount":{"type":"number","title":"총액","description":"총액."},"vbank_code":{"type":"string","title":"가상계좌 은행 코드","description":"가상계좌 은행 코드."},"vbank_due":{"type":"number","title":"가상계좌 입금기한, 유닉스 타임","description":"가상계좌 입금기한, 유닉스 타임."},"vbank_holder":{"type":"string","title":"예금주","description":"예금주."},"name":{"type":"string"},"buyer_name":{"type":"string"},"buyer_email":{"type":"string"},"buyer_tel":{"type":"string"},"buyer_addr":{"type":"string"},"buyer_postcode":{"type":"string"},"pg":{"type":"string"},"notice_url":{"type":"string","title":"가상 계좌 입금 정보를 수신할 URL","description":"가상 계좌 입금 정보를 수신할 URL.\n\n누락시 기본 웹훅 URL 사용."},"custom_data":{"type":"string","title":"커스텀 데이터, 자유롭게 사용 가능","description":"커스텀 데이터, 자유롭게 사용 가능."},"pg_api_key":{"type":"string","title":"[이니시스 전용] 가맹점 콘솔에서 확인한 API 값","description":"[이니시스 전용] 가맹점 콘솔에서 확인한 API 값."}},"required":["merchant_uid","amount","vbank_code","vbank_due","vbank_holder"],"description":"가상 계좌 결제 입력 정보.\n\n가상 계좌를 임의 생성할 수 있다.\n\n단, 일부 PG 사 혹은 `fake-iamport-server` 만 가능.\n\n - 세틀뱅크\n - 나이스페이먼츠\n - KG이니시스"}}}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"vbank_code":{"type":"string","title":"가상 계좌 식별자 코드","description":"가상 계좌 식별자 코드."},"vbank_name":{"type":"string","description":"가상 게좌 이름"},"vbank_num":{"type":"string","description":"가상 계좌 번호"},"vbank_holder":{"type":"string","title":"가상 계좌 예금주","description":"가상 계좌 예금주."},"vbank_date":{"type":"number","title":"가상 계좌 입금 만료 기한","description":"가상 계좌 입금 만료 기한."},"vbank_issued_at":{"type":"number","title":"가상 계좌 개설 일시","description":"가상 계좌 개설 일시."},"pay_method":{"type":"string","enum":["vbank"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["vbank_code","vbank_name","vbank_num","vbank_holder","vbank_date","vbank_issued_at","pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"가상 계좌 결제 정보."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"가상 계좌 발급하기."},{"method":"put","path":"/vbanks","name":"vbanks_put","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"imp_uid":{"type":"string","title":"대상 결제 기록의 {@link IIamportPayment.imp_uid}","description":"대상 결제 기록의 {@link IIamportPayment.imp_uid}."},"amount":{"type":"number","title":"수정할 결제 금액","description":"수정할 결제 금액."},"vbank_due":{"type":"number","title":"수정할 가상계좌 입금 기한","description":"수정할 가상계좌 입금 기한."}},"required":["imp_uid"],"description":"가상 계좌 결제의 수정 입력 정보.\n\n아직 입금되지 않은 가상계좌의 입금기한 또는 입금금액을 수정할 수 있다.\n\n다만, 세틀뱅크 혹은 `fake-iamport-server` 만 가능."}}}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"vbank_code":{"type":"string","title":"가상 계좌 식별자 코드","description":"가상 계좌 식별자 코드."},"vbank_name":{"type":"string","description":"가상 게좌 이름"},"vbank_num":{"type":"string","description":"가상 계좌 번호"},"vbank_holder":{"type":"string","title":"가상 계좌 예금주","description":"가상 계좌 예금주."},"vbank_date":{"type":"number","title":"가상 계좌 입금 만료 기한","description":"가상 계좌 입금 만료 기한."},"vbank_issued_at":{"type":"number","title":"가상 계좌 개설 일시","description":"가상 계좌 개설 일시."},"pay_method":{"type":"string","enum":["vbank"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["vbank_code","vbank_name","vbank_num","vbank_holder","vbank_date","vbank_issued_at","pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"가상 계좌 결제 정보."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"가상 계좌 편집하기."}],"errors":[],"options":{"keyword":true,"separate":null}} \ No newline at end of file diff --git a/examples/keyword/petstore.json b/examples/keyword/petstore.json index 48805a7..2c0d7b7 100644 --- a/examples/keyword/petstore.json +++ b/examples/keyword/petstore.json @@ -1,1287 +1 @@ -{ - "openapi": "3.0.3", - "functions": [ - { - "method": "post", - "path": "/pet", - "name": "pet_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "required": [ - "name", - "photoUrls" - ], - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "name": { - "type": "string", - "example": "doggie" - }, - "category": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 1 - }, - "name": { - "type": "string", - "example": "Dogs" - } - }, - "xml": { - "name": "category" - } - }, - "photoUrls": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "string", - "xml": { - "name": "photoUrl" - } - } - }, - "tags": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "xml": { - "name": "tag" - } - } - }, - "status": { - "type": "string", - "enum": [ - "available", - "pending", - "sold" - ], - "description": "pet status in the store" - } - }, - "xml": { - "name": "pet" - } - } - } - } - ], - "output": { - "required": [ - "name", - "photoUrls" - ], - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "name": { - "type": "string", - "example": "doggie" - }, - "category": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 1 - }, - "name": { - "type": "string", - "example": "Dogs" - } - }, - "xml": { - "name": "category" - } - }, - "photoUrls": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "string", - "xml": { - "name": "photoUrl" - } - } - }, - "tags": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "xml": { - "name": "tag" - } - } - }, - "status": { - "type": "string", - "enum": [ - "available", - "pending", - "sold" - ], - "description": "pet status in the store" - } - }, - "xml": { - "name": "pet" - } - }, - "description": "Add a new pet to the store" - }, - { - "method": "put", - "path": "/pet", - "name": "pet_put", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "required": [ - "name", - "photoUrls" - ], - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "name": { - "type": "string", - "example": "doggie" - }, - "category": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 1 - }, - "name": { - "type": "string", - "example": "Dogs" - } - }, - "xml": { - "name": "category" - } - }, - "photoUrls": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "string", - "xml": { - "name": "photoUrl" - } - } - }, - "tags": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "xml": { - "name": "tag" - } - } - }, - "status": { - "type": "string", - "enum": [ - "available", - "pending", - "sold" - ], - "description": "pet status in the store" - } - }, - "xml": { - "name": "pet" - } - } - } - } - ], - "output": { - "required": [ - "name", - "photoUrls" - ], - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "name": { - "type": "string", - "example": "doggie" - }, - "category": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 1 - }, - "name": { - "type": "string", - "example": "Dogs" - } - }, - "xml": { - "name": "category" - } - }, - "photoUrls": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "string", - "xml": { - "name": "photoUrl" - } - } - }, - "tags": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "xml": { - "name": "tag" - } - } - }, - "status": { - "type": "string", - "enum": [ - "available", - "pending", - "sold" - ], - "description": "pet status in the store" - } - }, - "xml": { - "name": "pet" - } - }, - "description": "Update an existing pet by Id" - }, - { - "method": "get", - "path": "/pet/findByStatus", - "name": "pet_findByStatus_get", - "parameters": [ - { - "type": "object", - "properties": { - "query": { - "type": "object", - "properties": {}, - "required": [] - } - } - } - ], - "output": { - "type": "array", - "items": { - "required": [ - "name", - "photoUrls" - ], - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "name": { - "type": "string", - "example": "doggie" - }, - "category": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 1 - }, - "name": { - "type": "string", - "example": "Dogs" - } - }, - "xml": { - "name": "category" - } - }, - "photoUrls": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "string", - "xml": { - "name": "photoUrl" - } - } - }, - "tags": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "xml": { - "name": "tag" - } - } - }, - "status": { - "type": "string", - "enum": [ - "available", - "pending", - "sold" - ], - "description": "pet status in the store" - } - }, - "xml": { - "name": "pet" - } - } - }, - "description": "Finds Pets by status.\n\nMultiple status values can be provided with comma separated strings" - }, - { - "method": "get", - "path": "/pet/findByTags", - "name": "pet_findByTags_get", - "parameters": [ - { - "type": "object", - "properties": { - "query": { - "type": "object", - "properties": { - "tags": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Tags to filter by" - } - }, - "required": [] - } - } - } - ], - "output": { - "type": "array", - "items": { - "required": [ - "name", - "photoUrls" - ], - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "name": { - "type": "string", - "example": "doggie" - }, - "category": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 1 - }, - "name": { - "type": "string", - "example": "Dogs" - } - }, - "xml": { - "name": "category" - } - }, - "photoUrls": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "string", - "xml": { - "name": "photoUrl" - } - } - }, - "tags": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "xml": { - "name": "tag" - } - } - }, - "status": { - "type": "string", - "enum": [ - "available", - "pending", - "sold" - ], - "description": "pet status in the store" - } - }, - "xml": { - "name": "pet" - } - } - }, - "description": "Finds Pets by tags.\n\nMultiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing." - }, - { - "method": "get", - "path": "/pet/{petId}", - "name": "pet_getByPetid", - "parameters": [ - { - "type": "object", - "properties": { - "petId": { - "type": "integer", - "format": "int64", - "description": "ID of pet to return" - } - } - } - ], - "output": { - "required": [ - "name", - "photoUrls" - ], - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "name": { - "type": "string", - "example": "doggie" - }, - "category": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 1 - }, - "name": { - "type": "string", - "example": "Dogs" - } - }, - "xml": { - "name": "category" - } - }, - "photoUrls": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "string", - "xml": { - "name": "photoUrl" - } - } - }, - "tags": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "xml": { - "name": "tag" - } - } - }, - "status": { - "type": "string", - "enum": [ - "available", - "pending", - "sold" - ], - "description": "pet status in the store" - } - }, - "xml": { - "name": "pet" - } - }, - "description": "Find pet by ID.\n\nReturns a single pet" - }, - { - "method": "post", - "path": "/pet/{petId}", - "name": "pet_postByPetid", - "parameters": [ - { - "type": "object", - "properties": { - "petId": { - "type": "integer", - "format": "int64", - "description": "ID of pet that needs to be updated" - }, - "query": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of pet that needs to be updated" - }, - "status": { - "type": "string", - "description": "Status of pet that needs to be updated" - } - }, - "required": [] - } - } - } - ], - "description": "" - }, - { - "method": "delete", - "path": "/pet/{petId}", - "name": "pet_eraseByPetid", - "parameters": [ - { - "type": "object", - "properties": { - "petId": { - "type": "integer", - "format": "int64", - "description": "Pet id to delete" - } - } - } - ], - "description": "" - }, - { - "method": "get", - "path": "/store/inventory", - "name": "store_inventory_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "object", - "additionalProperties": { - "type": "integer", - "format": "int32" - } - }, - "description": "Returns pet inventories by status.\n\nReturns a map of status codes to quantities" - }, - { - "method": "post", - "path": "/store/order", - "name": "store_order_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "petId": { - "type": "integer", - "format": "int64", - "example": 198772 - }, - "quantity": { - "type": "integer", - "format": "int32", - "example": 7 - }, - "shipDate": { - "type": "string", - "format": "date-time" - }, - "status": { - "type": "string", - "enum": [ - "placed", - "approved", - "delivered" - ], - "description": "Order Status" - }, - "complete": { - "type": "boolean" - } - }, - "xml": { - "name": "order" - } - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "petId": { - "type": "integer", - "format": "int64", - "example": 198772 - }, - "quantity": { - "type": "integer", - "format": "int32", - "example": 7 - }, - "shipDate": { - "type": "string", - "format": "date-time" - }, - "status": { - "type": "string", - "enum": [ - "placed", - "approved", - "delivered" - ], - "description": "Order Status" - }, - "complete": { - "type": "boolean" - } - }, - "xml": { - "name": "order" - } - }, - "description": "Place an order for a pet.\n\nPlace a new order in the store" - }, - { - "method": "get", - "path": "/store/order/{orderId}", - "name": "store_order_getByOrderid", - "parameters": [ - { - "type": "object", - "properties": { - "orderId": { - "type": "integer", - "format": "int64", - "description": "ID of order that needs to be fetched" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "petId": { - "type": "integer", - "format": "int64", - "example": 198772 - }, - "quantity": { - "type": "integer", - "format": "int32", - "example": 7 - }, - "shipDate": { - "type": "string", - "format": "date-time" - }, - "status": { - "type": "string", - "enum": [ - "placed", - "approved", - "delivered" - ], - "description": "Order Status" - }, - "complete": { - "type": "boolean" - } - }, - "xml": { - "name": "order" - } - }, - "description": "Find purchase order by ID.\n\nFor valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions." - }, - { - "method": "delete", - "path": "/store/order/{orderId}", - "name": "store_order_eraseByOrderid", - "parameters": [ - { - "type": "object", - "properties": { - "orderId": { - "type": "integer", - "format": "int64", - "description": "ID of the order that needs to be deleted" - } - } - } - ], - "description": "Delete purchase order by ID.\n\nFor valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors" - }, - { - "method": "post", - "path": "/user", - "name": "user_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "username": { - "type": "string", - "example": "theUser" - }, - "firstName": { - "type": "string", - "example": "John" - }, - "lastName": { - "type": "string", - "example": "James" - }, - "email": { - "type": "string", - "example": "john@email.com" - }, - "password": { - "type": "string", - "example": "12345" - }, - "phone": { - "type": "string", - "example": "12345" - }, - "userStatus": { - "type": "integer", - "description": "User Status", - "format": "int32", - "example": 1 - } - }, - "xml": { - "name": "user" - } - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "username": { - "type": "string", - "example": "theUser" - }, - "firstName": { - "type": "string", - "example": "John" - }, - "lastName": { - "type": "string", - "example": "James" - }, - "email": { - "type": "string", - "example": "john@email.com" - }, - "password": { - "type": "string", - "example": "12345" - }, - "phone": { - "type": "string", - "example": "12345" - }, - "userStatus": { - "type": "integer", - "description": "User Status", - "format": "int32", - "example": 1 - } - }, - "xml": { - "name": "user" - } - }, - "description": "Create user.\n\nThis can only be done by the logged in user." - }, - { - "method": "post", - "path": "/user/createWithList", - "name": "user_createWithList_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "username": { - "type": "string", - "example": "theUser" - }, - "firstName": { - "type": "string", - "example": "John" - }, - "lastName": { - "type": "string", - "example": "James" - }, - "email": { - "type": "string", - "example": "john@email.com" - }, - "password": { - "type": "string", - "example": "12345" - }, - "phone": { - "type": "string", - "example": "12345" - }, - "userStatus": { - "type": "integer", - "description": "User Status", - "format": "int32", - "example": 1 - } - }, - "xml": { - "name": "user" - } - } - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "username": { - "type": "string", - "example": "theUser" - }, - "firstName": { - "type": "string", - "example": "John" - }, - "lastName": { - "type": "string", - "example": "James" - }, - "email": { - "type": "string", - "example": "john@email.com" - }, - "password": { - "type": "string", - "example": "12345" - }, - "phone": { - "type": "string", - "example": "12345" - }, - "userStatus": { - "type": "integer", - "description": "User Status", - "format": "int32", - "example": 1 - } - }, - "xml": { - "name": "user" - } - }, - "description": "Creates list of users with given input array" - }, - { - "method": "get", - "path": "/user/login", - "name": "user_login_get", - "parameters": [ - { - "type": "object", - "properties": { - "query": { - "type": "object", - "properties": { - "username": { - "type": "string", - "description": "The user name for login" - }, - "password": { - "type": "string", - "description": "The password for login in clear text" - } - }, - "required": [] - } - } - } - ], - "output": { - "type": "string" - }, - "description": "" - }, - { - "method": "get", - "path": "/user/logout", - "name": "user_logout_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "description": "" - }, - { - "method": "get", - "path": "/user/{username}", - "name": "user_getByUsername", - "parameters": [ - { - "type": "object", - "properties": { - "username": { - "type": "string", - "description": "The name that needs to be fetched. Use user1 for testing. " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "username": { - "type": "string", - "example": "theUser" - }, - "firstName": { - "type": "string", - "example": "John" - }, - "lastName": { - "type": "string", - "example": "James" - }, - "email": { - "type": "string", - "example": "john@email.com" - }, - "password": { - "type": "string", - "example": "12345" - }, - "phone": { - "type": "string", - "example": "12345" - }, - "userStatus": { - "type": "integer", - "description": "User Status", - "format": "int32", - "example": 1 - } - }, - "xml": { - "name": "user" - } - }, - "description": "" - }, - { - "method": "put", - "path": "/user/{username}", - "name": "user_putByUsername", - "parameters": [ - { - "type": "object", - "properties": { - "username": { - "type": "string", - "description": "name that need to be deleted" - }, - "body": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "username": { - "type": "string", - "example": "theUser" - }, - "firstName": { - "type": "string", - "example": "John" - }, - "lastName": { - "type": "string", - "example": "James" - }, - "email": { - "type": "string", - "example": "john@email.com" - }, - "password": { - "type": "string", - "example": "12345" - }, - "phone": { - "type": "string", - "example": "12345" - }, - "userStatus": { - "type": "integer", - "description": "User Status", - "format": "int32", - "example": 1 - } - }, - "xml": { - "name": "user" - } - } - } - } - ], - "description": "Update user.\n\nThis can only be done by the logged in user." - }, - { - "method": "delete", - "path": "/user/{username}", - "name": "user_eraseByUsername", - "parameters": [ - { - "type": "object", - "properties": { - "username": { - "type": "string", - "description": "The name that needs to be deleted" - } - } - } - ], - "description": "Delete user.\n\nThis can only be done by the logged in user." - } - ], - "errors": [ - { - "method": "post", - "path": "/pet/{petId}/uploadImage", - "messages": [ - "supports only \"application/json\", \"application/x-www-form-urlencoded\", \"multipart/form-data\" and \"text/plain\" content type in the request body." - ] - } - ], - "options": { - "keyword": true, - "separate": null - } -} \ No newline at end of file +{"openapi":"3.0.3","functions":[{"method":"post","path":"/pet","name":"pet_post","parameters":[{"type":"object","properties":{"body":{"required":["name","photoUrls"],"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"name":{"type":"string","example":"doggie"},"category":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Dogs"}},"xml":{"name":"category"}},"photoUrls":{"type":"array","xml":{"wrapped":true},"items":{"type":"string","xml":{"name":"photoUrl"}}},"tags":{"type":"array","xml":{"wrapped":true},"items":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}},"xml":{"name":"tag"}}},"status":{"type":"string","enum":["available","pending","sold"],"description":"pet status in the store"}},"xml":{"name":"pet"}}}}],"output":{"required":["name","photoUrls"],"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"name":{"type":"string","example":"doggie"},"category":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Dogs"}},"xml":{"name":"category"}},"photoUrls":{"type":"array","xml":{"wrapped":true},"items":{"type":"string","xml":{"name":"photoUrl"}}},"tags":{"type":"array","xml":{"wrapped":true},"items":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}},"xml":{"name":"tag"}}},"status":{"type":"string","enum":["available","pending","sold"],"description":"pet status in the store"}},"xml":{"name":"pet"}},"description":"Add a new pet to the store"},{"method":"put","path":"/pet","name":"pet_put","parameters":[{"type":"object","properties":{"body":{"required":["name","photoUrls"],"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"name":{"type":"string","example":"doggie"},"category":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Dogs"}},"xml":{"name":"category"}},"photoUrls":{"type":"array","xml":{"wrapped":true},"items":{"type":"string","xml":{"name":"photoUrl"}}},"tags":{"type":"array","xml":{"wrapped":true},"items":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}},"xml":{"name":"tag"}}},"status":{"type":"string","enum":["available","pending","sold"],"description":"pet status in the store"}},"xml":{"name":"pet"}}}}],"output":{"required":["name","photoUrls"],"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"name":{"type":"string","example":"doggie"},"category":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Dogs"}},"xml":{"name":"category"}},"photoUrls":{"type":"array","xml":{"wrapped":true},"items":{"type":"string","xml":{"name":"photoUrl"}}},"tags":{"type":"array","xml":{"wrapped":true},"items":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}},"xml":{"name":"tag"}}},"status":{"type":"string","enum":["available","pending","sold"],"description":"pet status in the store"}},"xml":{"name":"pet"}},"description":"Update an existing pet by Id"},{"method":"get","path":"/pet/findByStatus","name":"pet_findByStatus_get","parameters":[{"type":"object","properties":{"query":{"type":"object","properties":{},"required":[]}}}],"output":{"type":"array","items":{"required":["name","photoUrls"],"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"name":{"type":"string","example":"doggie"},"category":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Dogs"}},"xml":{"name":"category"}},"photoUrls":{"type":"array","xml":{"wrapped":true},"items":{"type":"string","xml":{"name":"photoUrl"}}},"tags":{"type":"array","xml":{"wrapped":true},"items":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}},"xml":{"name":"tag"}}},"status":{"type":"string","enum":["available","pending","sold"],"description":"pet status in the store"}},"xml":{"name":"pet"}}},"description":"Finds Pets by status.\n\nMultiple status values can be provided with comma separated strings"},{"method":"get","path":"/pet/findByTags","name":"pet_findByTags_get","parameters":[{"type":"object","properties":{"query":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"string"},"description":"Tags to filter by"}},"required":[]}}}],"output":{"type":"array","items":{"required":["name","photoUrls"],"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"name":{"type":"string","example":"doggie"},"category":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Dogs"}},"xml":{"name":"category"}},"photoUrls":{"type":"array","xml":{"wrapped":true},"items":{"type":"string","xml":{"name":"photoUrl"}}},"tags":{"type":"array","xml":{"wrapped":true},"items":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}},"xml":{"name":"tag"}}},"status":{"type":"string","enum":["available","pending","sold"],"description":"pet status in the store"}},"xml":{"name":"pet"}}},"description":"Finds Pets by tags.\n\nMultiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing."},{"method":"get","path":"/pet/{petId}","name":"pet_getByPetid","parameters":[{"type":"object","properties":{"petId":{"type":"integer","format":"int64","description":"ID of pet to return"}}}],"output":{"required":["name","photoUrls"],"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"name":{"type":"string","example":"doggie"},"category":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Dogs"}},"xml":{"name":"category"}},"photoUrls":{"type":"array","xml":{"wrapped":true},"items":{"type":"string","xml":{"name":"photoUrl"}}},"tags":{"type":"array","xml":{"wrapped":true},"items":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}},"xml":{"name":"tag"}}},"status":{"type":"string","enum":["available","pending","sold"],"description":"pet status in the store"}},"xml":{"name":"pet"}},"description":"Find pet by ID.\n\nReturns a single pet"},{"method":"post","path":"/pet/{petId}","name":"pet_postByPetid","parameters":[{"type":"object","properties":{"petId":{"type":"integer","format":"int64","description":"ID of pet that needs to be updated"},"query":{"type":"object","properties":{"name":{"type":"string","description":"Name of pet that needs to be updated"},"status":{"type":"string","description":"Status of pet that needs to be updated"}},"required":[]}}}],"description":""},{"method":"delete","path":"/pet/{petId}","name":"pet_eraseByPetid","parameters":[{"type":"object","properties":{"petId":{"type":"integer","format":"int64","description":"Pet id to delete"}}}],"description":""},{"method":"get","path":"/store/inventory","name":"store_inventory_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}},"description":"Returns pet inventories by status.\n\nReturns a map of status codes to quantities"},{"method":"post","path":"/store/order","name":"store_order_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"petId":{"type":"integer","format":"int64","example":198772},"quantity":{"type":"integer","format":"int32","example":7},"shipDate":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["placed","approved","delivered"],"description":"Order Status"},"complete":{"type":"boolean"}},"xml":{"name":"order"}}}}],"output":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"petId":{"type":"integer","format":"int64","example":198772},"quantity":{"type":"integer","format":"int32","example":7},"shipDate":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["placed","approved","delivered"],"description":"Order Status"},"complete":{"type":"boolean"}},"xml":{"name":"order"}},"description":"Place an order for a pet.\n\nPlace a new order in the store"},{"method":"get","path":"/store/order/{orderId}","name":"store_order_getByOrderid","parameters":[{"type":"object","properties":{"orderId":{"type":"integer","format":"int64","description":"ID of order that needs to be fetched"}}}],"output":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"petId":{"type":"integer","format":"int64","example":198772},"quantity":{"type":"integer","format":"int32","example":7},"shipDate":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["placed","approved","delivered"],"description":"Order Status"},"complete":{"type":"boolean"}},"xml":{"name":"order"}},"description":"Find purchase order by ID.\n\nFor valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions."},{"method":"delete","path":"/store/order/{orderId}","name":"store_order_eraseByOrderid","parameters":[{"type":"object","properties":{"orderId":{"type":"integer","format":"int64","description":"ID of the order that needs to be deleted"}}}],"description":"Delete purchase order by ID.\n\nFor valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors"},{"method":"post","path":"/user","name":"user_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"username":{"type":"string","example":"theUser"},"firstName":{"type":"string","example":"John"},"lastName":{"type":"string","example":"James"},"email":{"type":"string","example":"john@email.com"},"password":{"type":"string","example":"12345"},"phone":{"type":"string","example":"12345"},"userStatus":{"type":"integer","description":"User Status","format":"int32","example":1}},"xml":{"name":"user"}}}}],"output":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"username":{"type":"string","example":"theUser"},"firstName":{"type":"string","example":"John"},"lastName":{"type":"string","example":"James"},"email":{"type":"string","example":"john@email.com"},"password":{"type":"string","example":"12345"},"phone":{"type":"string","example":"12345"},"userStatus":{"type":"integer","description":"User Status","format":"int32","example":1}},"xml":{"name":"user"}},"description":"Create user.\n\nThis can only be done by the logged in user."},{"method":"post","path":"/user/createWithList","name":"user_createWithList_post","parameters":[{"type":"object","properties":{"body":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"username":{"type":"string","example":"theUser"},"firstName":{"type":"string","example":"John"},"lastName":{"type":"string","example":"James"},"email":{"type":"string","example":"john@email.com"},"password":{"type":"string","example":"12345"},"phone":{"type":"string","example":"12345"},"userStatus":{"type":"integer","description":"User Status","format":"int32","example":1}},"xml":{"name":"user"}}}}}],"output":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"username":{"type":"string","example":"theUser"},"firstName":{"type":"string","example":"John"},"lastName":{"type":"string","example":"James"},"email":{"type":"string","example":"john@email.com"},"password":{"type":"string","example":"12345"},"phone":{"type":"string","example":"12345"},"userStatus":{"type":"integer","description":"User Status","format":"int32","example":1}},"xml":{"name":"user"}},"description":"Creates list of users with given input array"},{"method":"get","path":"/user/login","name":"user_login_get","parameters":[{"type":"object","properties":{"query":{"type":"object","properties":{"username":{"type":"string","description":"The user name for login"},"password":{"type":"string","description":"The password for login in clear text"}},"required":[]}}}],"output":{"type":"string"},"description":""},{"method":"get","path":"/user/logout","name":"user_logout_get","parameters":[{"type":"object","properties":{}}],"description":""},{"method":"get","path":"/user/{username}","name":"user_getByUsername","parameters":[{"type":"object","properties":{"username":{"type":"string","description":"The name that needs to be fetched. Use user1 for testing. "}}}],"output":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"username":{"type":"string","example":"theUser"},"firstName":{"type":"string","example":"John"},"lastName":{"type":"string","example":"James"},"email":{"type":"string","example":"john@email.com"},"password":{"type":"string","example":"12345"},"phone":{"type":"string","example":"12345"},"userStatus":{"type":"integer","description":"User Status","format":"int32","example":1}},"xml":{"name":"user"}},"description":""},{"method":"put","path":"/user/{username}","name":"user_putByUsername","parameters":[{"type":"object","properties":{"username":{"type":"string","description":"name that need to be deleted"},"body":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"username":{"type":"string","example":"theUser"},"firstName":{"type":"string","example":"John"},"lastName":{"type":"string","example":"James"},"email":{"type":"string","example":"john@email.com"},"password":{"type":"string","example":"12345"},"phone":{"type":"string","example":"12345"},"userStatus":{"type":"integer","description":"User Status","format":"int32","example":1}},"xml":{"name":"user"}}}}],"description":"Update user.\n\nThis can only be done by the logged in user."},{"method":"delete","path":"/user/{username}","name":"user_eraseByUsername","parameters":[{"type":"object","properties":{"username":{"type":"string","description":"The name that needs to be deleted"}}}],"description":"Delete user.\n\nThis can only be done by the logged in user."}],"errors":[{"method":"post","path":"/pet/{petId}/uploadImage","messages":["supports only \"application/json\", \"application/x-www-form-urlencoded\", \"multipart/form-data\" and \"text/plain\" content type in the request body."]}],"options":{"keyword":true,"separate":null}} \ No newline at end of file diff --git a/examples/keyword/shopping.json b/examples/keyword/shopping.json index 9fe9564..14f6b69 100644 --- a/examples/keyword/shopping.json +++ b/examples/keyword/shopping.json @@ -1,50964 +1 @@ -{ - "openapi": "3.0.3", - "functions": [ - { - "method": "get", - "path": "/monitors/health", - "name": "monitors_health_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "description": "Health check API." - }, - { - "method": "get", - "path": "/monitors/performance", - "name": "monitors_performance_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "object", - "properties": { - "cpu": { - "type": "object", - "properties": { - "user": { - "type": "number" - }, - "system": { - "type": "number" - } - }, - "required": [ - "user", - "system" - ] - }, - "memory": { - "type": "object", - "properties": { - "rss": { - "type": "number" - }, - "heapTotal": { - "type": "number" - }, - "heapUsed": { - "type": "number" - }, - "external": { - "type": "number" - }, - "arrayBuffers": { - "type": "number" - } - }, - "required": [ - "rss", - "heapTotal", - "heapUsed", - "external", - "arrayBuffers" - ] - }, - "resource": { - "type": "object", - "properties": { - "fsRead": { - "type": "number" - }, - "fsWrite": { - "type": "number" - }, - "involuntaryContextSwitches": { - "type": "number" - }, - "ipcReceived": { - "type": "number" - }, - "ipcSent": { - "type": "number" - }, - "majorPageFault": { - "type": "number" - }, - "maxRSS": { - "type": "number" - }, - "minorPageFault": { - "type": "number" - }, - "sharedMemorySize": { - "type": "number" - }, - "signalsCount": { - "type": "number" - }, - "swappedOut": { - "type": "number" - }, - "systemCPUTime": { - "type": "number" - }, - "unsharedDataSize": { - "type": "number" - }, - "unsharedStackSize": { - "type": "number" - }, - "userCPUTime": { - "type": "number" - }, - "voluntaryContextSwitches": { - "type": "number" - } - }, - "required": [ - "fsRead", - "fsWrite", - "involuntaryContextSwitches", - "ipcReceived", - "ipcSent", - "majorPageFault", - "maxRSS", - "minorPageFault", - "sharedMemorySize", - "signalsCount", - "swappedOut", - "systemCPUTime", - "unsharedDataSize", - "unsharedStackSize", - "userCPUTime", - "voluntaryContextSwitches" - ] - } - }, - "required": [ - "cpu", - "memory", - "resource" - ] - }, - "description": "Get performance information.\n\nGet perofmration information composed with CPU, memory and resource usage." - }, - { - "method": "get", - "path": "/monitors/system", - "name": "monitors_system_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "object", - "properties": { - "uid": { - "type": "number", - "title": "Random Unique ID", - "description": "Random Unique ID." - }, - "arguments": { - "type": "array", - "items": { - "type": "string" - }, - "description": "`process.argv`" - }, - "commit": { - "type": "object", - "properties": { - "shortHash": { - "type": "string" - }, - "branch": { - "type": "string" - }, - "hash": { - "type": "string" - }, - "subject": { - "type": "string" - }, - "sanitizedSubject": { - "type": "string" - }, - "body": { - "type": "string" - }, - "author": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "email": { - "type": "string" - } - }, - "required": [ - "name", - "email" - ], - "description": "Git user account info." - }, - "committer": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "email": { - "type": "string" - } - }, - "required": [ - "name", - "email" - ], - "description": "Git user account info." - }, - "authored_at": { - "type": "string" - }, - "commited_at": { - "type": "string" - }, - "notes": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "shortHash", - "branch", - "hash", - "subject", - "sanitizedSubject", - "body", - "author", - "committer", - "authored_at", - "commited_at", - "tags" - ], - "description": "Git commit info." - }, - "package": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "string" - }, - "description": { - "type": "string" - }, - "main": { - "type": "string" - }, - "typings": { - "type": "string" - }, - "scripts": { - "type": "object", - "properties": {}, - "description": "Construct a type with a set of properties K of type T", - "additionalProperties": { - "type": "string" - } - }, - "repository": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "git" - ] - }, - "url": { - "type": "string" - } - }, - "required": [ - "type", - "url" - ] - }, - "author": { - "type": "string" - }, - "license": { - "type": "string" - }, - "bugs": { - "type": "object", - "properties": { - "url": { - "type": "string" - } - }, - "required": [ - "url" - ] - }, - "homepage": { - "type": "string" - }, - "devDependencies": { - "type": "object", - "properties": {}, - "description": "Construct a type with a set of properties K of type T", - "additionalProperties": { - "type": "string" - } - }, - "dependencies": { - "type": "object", - "properties": {}, - "description": "Construct a type with a set of properties K of type T", - "additionalProperties": { - "type": "string" - } - }, - "publishConfig": { - "type": "object", - "properties": { - "registry": { - "type": "string" - } - }, - "required": [ - "registry" - ] - }, - "files": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "name", - "version", - "description", - "scripts", - "repository", - "author", - "license", - "bugs", - "homepage", - "dependencies" - ], - "description": "NPM package info." - }, - "created_at": { - "type": "string", - "title": "Creation time of this server", - "description": "Creation time of this server." - } - }, - "required": [ - "uid", - "arguments", - "commit", - "package", - "created_at" - ], - "description": "System Information." - }, - "description": "Get system information.\n\nGet system information with commit and package information.\n\nAs such information is a type of sensitive, response be encrypted." - }, - { - "method": "get", - "path": "/shoppings/admins/authenticate", - "name": "shoppings_admins_authenticate_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - "description": "Get administrator information.\n\nGet {@link IShoppingAdministrator.IInvert administrator} information of\ncurrent {@link IShoppingCustomer customer}.\n\nIf current {@link IShoppingMember member} is not an administrator,\nit throws 403 forbidden exception." - }, - { - "method": "post", - "path": "/shoppings/admins/authenticate", - "name": "shoppings_admins_authenticate_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": {}, - "description": "Joining request info." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - "description": "Join as an administrator.\n\nJoin as an administrator with {@link IShoppingAdministrator.IJoin joining info}.\n\nThis method is allowed only when the {@link IShoppingCustomer customer} already\nhas joined the {@link IShoppingMember membership}. IF not, he (she) must\naccomplish it before. If not, 403 forbidden exception would be thrown." - }, - { - "method": "put", - "path": "/shoppings/admins/authenticate/login", - "name": "shoppings_admins_authenticate_login_put", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "email": { - "type": "string", - "format": "email", - "title": "Email address of member", - "description": "Email address of member.\n\nIf the member has multiple email addresses, just use one of them." - }, - "password": { - "type": "string", - "title": "Password of the member account", - "description": "Password of the member account." - } - }, - "required": [ - "email", - "password" - ], - "description": "Login request info." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - "description": "Login as an administrator.\n\nLogin as an administrator with {@link IShoppingAdministrator.ILogin login info}.\n\nThis method has exactly same effect with\n{@link ShoppingApi.functional.customers.authenticate.login } function, but\nreturned type is a llttle different. The similar function returns\n{@link IShoppingCustomer } type that starting from the customer information, so\nthat you have to access to the administrator info through\n`customer.member.administrator`. In contrast with that, this method returns\n{@link IShoppingAdministrator.IInvert } type that starting from the administrator\ninfo, so that can access to the customer info through `administrator.customer`.\n\nOf course, to use this function, you had to {@link join } as an administrator\nbefore. If not, 403 forbidden exception would be thrown," - }, - { - "method": "delete", - "path": "/shoppings/admins/coupons/{id}", - "name": "shoppings_admins_coupons_eraseById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Target coupon's " - } - } - } - ], - "description": "Erase a coupon.\n\nErase a {@link IShoppingCoupon coupon} with given ID.\n\nFor reference, if there're some {@link IShoppingCouponTicket tickets}\nwhich are already issued from the target coupon, they would not be affected.\nThose tickets are still valid until their expration time." - }, - { - "method": "post", - "path": "/shoppings/admins/deposits", - "name": "shoppings_admins_deposits_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - -1, - 1 - ] - } - }, - "required": [ - "code", - "source", - "direction" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "created_at", - "code", - "source", - "direction" - ] - }, - "description": "Create a new deposit metadata.\n\nCreate a new {@link IShoppingDeposit deposit} metadata.\n\nThis action means that adding a new origin reason of deposit's income/outcome.\nOf course, creating a new deposit record does not mean that automatically\nincrease or decrease the {@link IShoppingCustomer customer}'s balance\nfollowing the record's reason why. The logic must be developed manually\nin the backend side." - }, - { - "method": "patch", - "path": "/shoppings/admins/deposits", - "name": "shoppings_admins_deposits_patch", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "source": { - "type": "string" - }, - "code": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - -1, - 1 - ] - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-deposit.source", - "-deposit.code", - "-deposit.direction", - "+deposit.source", - "+deposit.code", - "+deposit.direction" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - } - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "created_at", - "code", - "source", - "direction" - ] - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "Get deposit metadata list.\n\nList up every {@link IShoppingDeposit deposit} metadata informations\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingDeposit.IRequest.search search condition} in the request body.\nAlso, it is possible to customize sequence order of records by configuring\n{@link IShoppingDeposit.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/admins/deposits/{id}", - "name": "shoppings_admins_deposits_getById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "description": "Target deposit's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "created_at", - "code", - "source", - "direction" - ] - }, - "description": "Get a deposit metadata.\n\nGet a {@link IShoppingDeposit deposit} metadata information with its ID." - }, - { - "method": "delete", - "path": "/shoppings/admins/deposits/{id}", - "name": "shoppings_admins_deposits_eraseById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "description": "Target deposit's " - } - } - } - ], - "description": "Erase a deposit metadata.\n\nErase a {@link IShoppingDeposit deposit} metadata, so that no more\n{@link IShoppingCustomer customer}'s balance does not be increased or\ndecreased by the deposit's reason why." - }, - { - "method": "get", - "path": "/shoppings/admins/deposits/{code}/get", - "name": "shoppings_admins_deposits_get_getByCode", - "parameters": [ - { - "type": "object", - "properties": { - "code": { - "type": "string", - "description": "" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "created_at", - "code", - "source", - "direction" - ] - }, - "description": "Get a deposit metadata by its code.\n\nGet a {@link IShoppingDeposit deposit} metadata information with its code." - }, - { - "method": "post", - "path": "/shoppings/admins/mileages", - "name": "shoppings_admins_mileages_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - -1, - 1 - ] - }, - "value": { - "type": "number", - "nullable": true - } - }, - "required": [ - "code", - "source", - "direction", - "value" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "value", - "created_at", - "code", - "source", - "direction" - ] - }, - "description": "Create a new mileage metadata.\n\nCreate a new {@link IShoppingMileage mileage} metadata.\n\nThis action means that adding a new origin reason of mileage's income/outcome.\nOf course, creating a new mileage record does not mean that automatically\nincrease or decrease the {@link IShoppingCustomer customer}'s balance\nfollowing the record's reason why. The logic must be developed manually\nin the backend side." - }, - { - "method": "patch", - "path": "/shoppings/admins/mileages", - "name": "shoppings_admins_mileages_patch", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "source": { - "type": "string" - }, - "code": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - -1, - 1 - ] - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-mileage.source", - "-mileage.code", - "-mileage.direction", - "+mileage.source", - "+mileage.code", - "+mileage.direction" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - } - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "value", - "created_at", - "code", - "source", - "direction" - ] - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "Get mileage metadata list.\n\nList up every {@link IShoppingMileage mileage} metadata informations\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingMileage.IRequest.search search condition} in the request body.\nAlso, it is possible to customize sequence order of records by configuring\n{@link IShoppingMileage.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/admins/mileages/{id}", - "name": "shoppings_admins_mileages_getById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "description": "Target mileage's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "value", - "created_at", - "code", - "source", - "direction" - ] - }, - "description": "Get a mileage metadata.\n\nGet a {@link IShoppingMileage mileage} metadata information with its ID." - }, - { - "method": "delete", - "path": "/shoppings/admins/mileages/{id}", - "name": "shoppings_admins_mileages_eraseById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "description": "Target mileage's " - } - } - } - ], - "description": "Erase a mileage metadata.\n\nErase a {@link IShoppingMileage mileage} metadata, so that no more\n{@link IShoppingCustomer customer}'s balance does not be increased or\ndecreased by the mileage's reason why." - }, - { - "method": "get", - "path": "/shoppings/admins/mileages/{code}/get", - "name": "shoppings_admins_mileages_get_getByCode", - "parameters": [ - { - "type": "object", - "properties": { - "code": { - "type": "string", - "description": "" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "value", - "created_at", - "code", - "source", - "direction" - ] - }, - "description": "Get a mileage metadata by its code.\n\nGet a {@link IShoppingMileage mileage} metadata information with its code." - }, - { - "method": "post", - "path": "/shoppings/admins/mileages/donations", - "name": "shoppings_admins_mileages_donations_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "citizen_id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number" - }, - "reason": { - "type": "string" - } - }, - "required": [ - "citizen_id", - "value", - "reason" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "administrator": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "value": { - "type": "number" - }, - "reason": { - "type": "string" - }, - "created_at": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "id", - "administrator", - "citizen", - "value", - "reason", - "created_at" - ] - }, - "description": "Donate a mileage to a citizen.\n\nDonate a mileage to a specific {@link IShoppingCitizen citizen} from\ncurrent {@link IShoppingAdministrator administrator}, with detailed\nreason why.\n\nNote that, as donating mileage affects to the citizen's balance and\ncurrent shopping mall's operating profit, administrator must archive\nthe detailed reason why the mileage is donated." - }, - { - "method": "patch", - "path": "/shoppings/admins/mileages/donations", - "name": "shoppings_admins_mileages_donations_patch", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "mobile": { - "type": "string", - "pattern": "^[0-9]*$" - }, - "name": { - "type": "string" - } - } - }, - "minimum": { - "type": "number", - "minimum": 0 - }, - "maximum": { - "type": "number", - "minimum": 0 - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-donation.created_at", - "-donation.value", - "-donation.reason", - "+donation.created_at", - "+donation.value", - "+donation.reason" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - } - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "administrator": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "value": { - "type": "number" - }, - "reason": { - "type": "string" - }, - "created_at": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "id", - "administrator", - "citizen", - "value", - "reason", - "created_at" - ] - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every mileage donation histories.\n\nList up every {@link IShoppingMileageDonation mileage donation histories}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingMileageDonation.IRequest.search search condition} in\nthe request body. Also, it is possible to customize sequence order of\nrecords by configuring {@link IShoppingMileageDonation.IRequest.sort sort}." - }, - { - "method": "get", - "path": "/shoppings/admins/mileages/donations/{id}", - "name": "shoppings_admins_mileages_donations_getById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "description": "Target history's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "administrator": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "value": { - "type": "number" - }, - "reason": { - "type": "string" - }, - "created_at": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "id", - "administrator", - "citizen", - "value", - "reason", - "created_at" - ] - }, - "description": "Get a mileage donation history.\n\nGet a {@link IShoppingMileageDonation mileage donation history} with its ID." - }, - { - "method": "post", - "path": "/shoppings/admins/sales/{saleId}/questions/{inquiryId}/comments", - "name": "shoppings_admins_sales_questions_comments_postBySaleidAndInquiryid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Target inquiry's " - }, - "body": { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales." - }, - { - "method": "patch", - "path": "/shoppings/admins/sales/{saleId}/questions/{inquiryId}/comments", - "name": "shoppings_admins_sales_questions_comments_patchBySaleidAndInquiryid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "body": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the comments with pagination and searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales." - }, - { - "method": "get", - "path": "/shoppings/admins/sales/{saleId}/questions/{inquiryId}/comments/{id}", - "name": "shoppings_admins_sales_questions_comments_getBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales." - }, - { - "method": "put", - "path": "/shoppings/admins/sales/{saleId}/questions/{inquiryId}/comments/{id}", - "name": "shoppings_admins_sales_questions_comments_putBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - }, - "body": { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot content of the comment." - }, - "description": "Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." - }, - { - "method": "patch", - "path": "/shoppings/admins/sales/{saleId}/questions", - "name": "shoppings_admins_sales_questions_patchBySaleid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "secret", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at" - ], - "description": "Summarized information of the question." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every summarized questions.\n\nList up every {@link IShoppingSaleQuestion.ISummary summarized questions} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned questions are summarized, not detailed. If you want\nto get the detailed information of a question, use {@link adridges } function\nor {@link at } function for each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.ISummary.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.ISummary.secret } with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." - }, - { - "method": "patch", - "path": "/shoppings/admins/sales/{saleId}/questions/abridges", - "name": "shoppings_admins_sales_questions_abridges_patchBySaleid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "secret", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "description": "Abridged information of the question." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every abridged questions.\n\nList up every {@link IShoppingSaleQuestion.IAbridge abridged questions} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned questions are abridged, not detailed. If you want\nto get the detailed information of a question, use {@link at } function\nfor each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.IAridge.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.IAridge.secret } with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/admins/sales/{saleId}/questions/{id}", - "name": "shoppings_admins_sales_questions_getBySaleidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target question's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "type": { - "type": "string", - "enum": [ - "question" - ], - "title": "Type of the derived inquiry", - "description": "Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion }\n- `review`: {@link IShoppingSaleReview }" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "seller", - "id", - "snapshots", - "created_at" - ], - "description": "Formal answer for the inquiry by the seller.", - "title": "Formal answer for the inquiry by the seller", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "secret", - "type", - "customer", - "answer", - "read_by_seller", - "id", - "snapshots", - "created_at" - ], - "description": "Question about sale snapshot.\n\n`IShoppingSaleQuestion` is a subtype entity of {@link IShoppingSaleInquiry },\nand is used when a {@link IShoppingCustomer customer} wants to ask something\nabout a {@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at\nthe time) registered by the {@link IShoppingSeller seller}.\n\nAnd, like most shopping malls, `IShoppingSaleQuestion` also provides\na {@link secret } attribute, allowing you to create a \"secret message\" that can\nonly be viewed by the seller and the customer who wrote the question." - }, - "description": "Get a question info.\n\nGet a detailed {@link IShoppingSaleQuestion question} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s question. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nquestions of the sales except the {@link IShoppingSaleQuestion.secret }\nvalue is `false`." - }, - { - "method": "post", - "path": "/shoppings/admins/sales/{saleId}/reviews/{inquiryId}/comments", - "name": "shoppings_admins_sales_reviews_comments_postBySaleidAndInquiryid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Target inquiry's " - }, - "body": { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales." - }, - { - "method": "patch", - "path": "/shoppings/admins/sales/{saleId}/reviews/{inquiryId}/comments", - "name": "shoppings_admins_sales_reviews_comments_patchBySaleidAndInquiryid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "body": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the comments with pagination and searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales." - }, - { - "method": "get", - "path": "/shoppings/admins/sales/{saleId}/reviews/{inquiryId}/comments/{id}", - "name": "shoppings_admins_sales_reviews_comments_getBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales." - }, - { - "method": "put", - "path": "/shoppings/admins/sales/{saleId}/reviews/{inquiryId}/comments/{id}", - "name": "shoppings_admins_sales_reviews_comments_putBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - }, - "body": { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot content of the comment." - }, - "description": "Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." - }, - { - "method": "patch", - "path": "/shoppings/admins/sales/{saleId}/reviews", - "name": "shoppings_admins_sales_reviews_patchBySaleid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - }, - "minimum": { - "type": "number", - "minimum": 0, - "maximum": 100 - }, - "maximum": { - "type": "number", - "minimum": 0, - "maximum": 100 - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at", - "-score", - "+score" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "score": { - "type": "number", - "title": "Score of the review", - "description": "Score of the review." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "score", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at" - ], - "description": "Summarized information of the review." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every summarized reviews.\n\nList up every {@link IShoppingSaleReview.ISummary summarized reviews} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned reviews are summarized, not detailed. If you want\nto get the detailed information of a review, use {@link adridges } function\nor {@link at } function for each article.\n\nAlso, returned review has {@link IShoppingSaleReview.ISummary.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." - }, - { - "method": "patch", - "path": "/shoppings/admins/sales/{saleId}/reviews/abridges", - "name": "shoppings_admins_sales_reviews_abridges_patchBySaleid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - }, - "minimum": { - "type": "number", - "minimum": 0, - "maximum": 100 - }, - "maximum": { - "type": "number", - "minimum": 0, - "maximum": 100 - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at", - "-score", - "+score" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "score": { - "type": "number", - "minimum": 0, - "maximum": 100, - "title": "Score of the review", - "description": "Score of the review." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "score", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "description": "Abridged information of the review." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every abridged reviews.\n\nList up every {@link IShoppingSaleReview.IAbridge abridged reviews} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned reviews are abridged, not detailed. If you want\nto get the detailed information of a review, use {@link at } function\nfor each article.\n\nAlso, returned review has {@link IShoppingSaleReview.IAridge.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/admins/sales/{saleId}/reviews/{id}", - "name": "shoppings_admins_sales_reviews_getBySaleidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target review's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "review" - ], - "title": "Type of the derived inquiry", - "description": "Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion }\n- `review`: {@link IShoppingSaleReview }" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "seller", - "id", - "snapshots", - "created_at" - ], - "description": "Formal answer for the inquiry by the seller.", - "title": "Formal answer for the inquiry by the seller", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "score": { - "type": "number", - "minimum": 0, - "maximum": 100, - "title": "Score of the review", - "description": "Score of the review." - }, - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "score", - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot content of the review article." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "type", - "customer", - "answer", - "read_by_seller", - "id", - "snapshots", - "created_at" - ], - "description": "Reviews for sale snapshots.\n\n`IShoppingSaleReview` is a subtype entity of {@link IShoppingSaleInquiry },\nand is used when a {@link IShoppingCustomer customer} purchases a\n{@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at the time)\nregistered by the {@link IShoppingSeller seller} as a product and leaves a\nreview and rating for it.\n\nFor reference, `IShoppingSaleReview` and\n{@link IShoppingOrderGod shopping_order_goods} have a logarithmic relationship\nof N: 1, but this does not mean that customers can continue to write reviews\nfor the same product indefinitely. Wouldn't there be restrictions, such as\nif you write a review once, you can write an additional review a month later?" - }, - "description": "Get a review info.\n\nGet a detailed {@link IShoppingSaleReview review} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s review. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nreviews of the sales." - }, - { - "method": "put", - "path": "/shoppings/admins/systematic/channels/{channelCode}/categories/{id}", - "name": "shoppings_admins_systematic_channels_categories_putByChannelcodeAndId", - "parameters": [ - { - "type": "object", - "properties": { - "channelCode": { - "type": "string", - "description": "Belonged channel's " - }, - "id": { - "type": "string", - "description": "Target category's " - }, - "body": { - "type": "object", - "properties": { - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent category's ID", - "description": "Parent category's ID." - }, - "name": { - "type": "string", - "title": "Representative name of the category", - "description": "Representative name of the category.\n\nThe name must be unique within the parent category. If no parent exists,\nthen the name must be unique within the channel between no parent\ncategories." - } - }, - "required": [ - "parent_id", - "name" - ], - "description": "Creation information of the category." - } - } - } - ], - "description": "Update a category.\n\nUpdate a {@link IShoppingChannelCategory category}'s name. If required,\nit is possible to change the parent category by its ID. Of course, detaching\nfrom the parent category so that becoming the root category is also possible." - }, - { - "method": "delete", - "path": "/shoppings/admins/systematic/channels/{channelCode}/categories/merge", - "name": "shoppings_admins_systematic_channels_categories_merge_eraseByChannelcode", - "parameters": [ - { - "type": "object", - "properties": { - "channelCode": { - "type": "string", - "description": "Belonged channel's " - }, - "body": { - "type": "object", - "properties": { - "keep": { - "type": "string", - "format": "uuid", - "title": "Target record to keep after merging", - "description": "Target record to keep after merging.\n\nAfter merge process, {@link absorbed } records would be merged into\nthis {@link keep } record." - }, - "absorbed": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - }, - "title": "To be absorbed to {@link keep } after merging", - "description": "To be absorbed to {@link keep } after merging." - } - }, - "required": [ - "keep", - "absorbed" - ], - "description": "Record Merge DTO.\n\n`IRecordMerge` is a structure for merging records.\n\nThe `merge` means that merging multiple {@link IRecordMerge.absorbed }\nrecords into {@link IRecordMerge.keep } instead of deleting\n{@link IRecordMerge.absorbed } records.\n\nIf there're some dependent tables of the target `table` having\nunique constraint on foriegn key column, such dependent tables\nalso perform the merge process, too.\n\nOf course, if there're another dependent tables under those\ndependents, they also perform the merge process recursively as well.\nSuch recursive merge process still works for self-recursive\n(tree-structured) tables." - } - } - } - ], - "description": "Merge multiple categories into one.\n\nIn this shopping mall system, it is not possible to delete a\n{@link IShoppingChannelCategory category}, because it is a systematic\nentity affecting to all other core entities like\n{@link IShoppingSale sales}. Instead of deleting, you can merge multiple\ncategories into one.\n\nIf you specify a category to absorb others, then all of other categories\nwill be merged into the specified one. Also, subsidiary entities of\ncategories also be merged and their references also be merged cascadingly." - }, - { - "method": "post", - "path": "/shoppings/admins/systematic/channels", - "name": "shoppings_admins_systematic_channels_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "code", - "name" - ], - "description": "Creation information of the channel." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "description": "Create a new channel.\n\nCreate a new {@link IShoppingChannel channel} with given code and name.\n\nAs channel means an individual market,\n{@link IShoppingAdministrator administrator} should perform this action\nonly when a new application being registered." - }, - { - "method": "patch", - "path": "/shoppings/admins/systematic/channels", - "name": "shoppings_admins_systematic_channels_patch", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-channel.code", - "-channel.name", - "-channel.created_at", - "+channel.code", - "+channel.name", - "+channel.created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the channels with pagination and searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every channels.\n\nList up every {@link IShoppingChannel channels} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingChannel.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingChannel.IRequest.sort sort condition}." - }, - { - "method": "put", - "path": "/shoppings/admins/systematic/channels/{id}", - "name": "shoppings_admins_systematic_channels_putById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "description": "Target channel's " - }, - "body": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "name" - ], - "description": "Updating information of the channel." - } - } - } - ], - "description": "Update a channel.\n\nUpdate a {@link IShoppingChannel channel}'s name.\n\nNote that, it is not possible to change the channel's code. If you want to\nto do it forcibly, then {@link create } new one and {@link merge } with it." - }, - { - "method": "delete", - "path": "/shoppings/admins/systematic/channels/merge", - "name": "shoppings_admins_systematic_channels_merge_erase", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "keep": { - "type": "string", - "format": "uuid", - "title": "Target record to keep after merging", - "description": "Target record to keep after merging.\n\nAfter merge process, {@link absorbed } records would be merged into\nthis {@link keep } record." - }, - "absorbed": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - }, - "title": "To be absorbed to {@link keep } after merging", - "description": "To be absorbed to {@link keep } after merging." - } - }, - "required": [ - "keep", - "absorbed" - ], - "description": "Record Merge DTO.\n\n`IRecordMerge` is a structure for merging records.\n\nThe `merge` means that merging multiple {@link IRecordMerge.absorbed }\nrecords into {@link IRecordMerge.keep } instead of deleting\n{@link IRecordMerge.absorbed } records.\n\nIf there're some dependent tables of the target `table` having\nunique constraint on foriegn key column, such dependent tables\nalso perform the merge process, too.\n\nOf course, if there're another dependent tables under those\ndependents, they also perform the merge process recursively as well.\nSuch recursive merge process still works for self-recursive\n(tree-structured) tables." - } - } - } - ], - "description": "Merge multiple channels into one.\n\nIn this shopping mall system, it is not possible to delete a\n{@link IShoppingChannel channel}, because it is a systematic entity\naffecting to all other core entities like customers, members and\nsales. Instead of deleting, you can merge multiple channels into one.\n\nIf you specify a channel to absorb others, then all of other channels\nwill be merged into the specified one. Also, subsidiary entities of\nchannels also be merged and their references also be merged cascadingly." - }, - { - "method": "post", - "path": "/shoppings/admins/systematic/sections", - "name": "shoppings_admins_systematic_sections_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - } - }, - "required": [ - "code", - "name" - ], - "description": "Creation information of the section." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "code", - "name", - "created_at" - ], - "description": "Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future." - }, - "description": "Create a new section.\n\nCreate a new {@link IShoppingSection section} with given code and name.\n\nAs section means a spatial unit of a market that handling different type\nof products with other section, {@link IShoppingAdministrator administrator}\nshould perform this action only when a new section being required." - }, - { - "method": "patch", - "path": "/shoppings/admins/systematic/sections", - "name": "shoppings_admins_systematic_sections_patch", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-section.code", - "-section.name", - "-section.created_at", - "+section.code", - "+section.name", - "+section.created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the sections with pagination and searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "code", - "name", - "created_at" - ], - "description": "Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every sections.\n\nList up every {@link IShoppingSection sections} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSection.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingSection.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/admins/systematic/sections/{id}", - "name": "shoppings_admins_systematic_sections_getById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "description": "Target section's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "code", - "name", - "created_at" - ], - "description": "Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future." - }, - "description": "Get a section info.\n\nGet a detailed {@link IShoppingSection section} information." - }, - { - "method": "put", - "path": "/shoppings/admins/systematic/sections/{id}", - "name": "shoppings_admins_systematic_sections_putById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "description": "Target section's " - }, - "body": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - } - }, - "required": [ - "name" - ], - "description": "Updating information of the section." - } - } - } - ], - "description": "Update a section.\n\nUpdate a {@link IShoppingSection section}'s name.\n\nNote that, it is not possible to change the section's code. If you want to\nto do it forcibly, then {@link create } new one and {@link merge } with it." - }, - { - "method": "delete", - "path": "/shoppings/admins/systematic/sections/merge", - "name": "shoppings_admins_systematic_sections_merge_erase", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "keep": { - "type": "string", - "format": "uuid", - "title": "Target record to keep after merging", - "description": "Target record to keep after merging.\n\nAfter merge process, {@link absorbed } records would be merged into\nthis {@link keep } record." - }, - "absorbed": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - }, - "title": "To be absorbed to {@link keep } after merging", - "description": "To be absorbed to {@link keep } after merging." - } - }, - "required": [ - "keep", - "absorbed" - ], - "description": "Record Merge DTO.\n\n`IRecordMerge` is a structure for merging records.\n\nThe `merge` means that merging multiple {@link IRecordMerge.absorbed }\nrecords into {@link IRecordMerge.keep } instead of deleting\n{@link IRecordMerge.absorbed } records.\n\nIf there're some dependent tables of the target `table` having\nunique constraint on foriegn key column, such dependent tables\nalso perform the merge process, too.\n\nOf course, if there're another dependent tables under those\ndependents, they also perform the merge process recursively as well.\nSuch recursive merge process still works for self-recursive\n(tree-structured) tables." - } - } - } - ], - "description": "Merge multiple sections into one.\n\nIn this shopping mall system, it is not possible to delete a\n{@link IShoppingSection section}, because it is a systematic entity\naffecting to all other core entities like {@link IShoppingSale sales}.\nInstead of deleting, you can merge multiple sections into one.\n\nIf you specify a section to absorb others, then all of other sections\nwill be merged into the specified one. Also, subsidiary entities of\nsections also be merged and their references also be merged cascadingly." - }, - { - "method": "get", - "path": "/shoppings/admins/systematic/sections/{code}/get", - "name": "shoppings_admins_systematic_sections_get_getByCode", - "parameters": [ - { - "type": "object", - "properties": { - "code": { - "type": "string", - "description": "Target section's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "code", - "name", - "created_at" - ], - "description": "Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future." - }, - "description": "Get a section info by its code.\n\nGet a detailed {@link IShoppingSection section} information by its code." - }, - { - "method": "patch", - "path": "/shoppings/customers/authenticate/refresh", - "name": "shoppings_customers_authenticate_refresh_patch", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "value": { - "type": "string" - } - }, - "required": [ - "value" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "setHeaders": { - "type": "object", - "properties": { - "Authorization": { - "type": "string" - } - }, - "required": [ - "Authorization" - ] - }, - "token": { - "type": "object", - "properties": { - "access": { - "type": "string" - }, - "refresh": { - "type": "string" - }, - "expired_at": { - "type": "string", - "format": "date-time" - }, - "refreshable_until": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "access", - "refresh", - "expired_at", - "refreshable_until" - ] - }, - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "setHeaders", - "token", - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ] - }, - "description": "Refresh the authentication token.\n\nCreate a new {@link IShoppingCustomer.IToken.access access token} of a\n{@link IShoppingCustomer customer} with the pre-issued\n{@link IShoppingCustomer.IToken.refresh refresh} token.\n\nNote that, this function is available until the\n{@link IShoppingCustomer.IToken.refreshable_until } value." - }, - { - "method": "get", - "path": "/shoppings/customers/authenticate", - "name": "shoppings_customers_authenticate_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "description": "Get current customer info.\n\nGet current {@link IShoppingCustomer customer} information from the\n{@link IShoppingCustomer.IToken.access access token}." - }, - { - "method": "post", - "path": "/shoppings/customers/authenticate", - "name": "shoppings_customers_authenticate_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "channel_code": { - "type": "string" - }, - "external_user": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "password": { - "type": "string", - "title": "Password of external user from the external system", - "description": "Password of external user from the external system.\n\nThis is a password issued to the user by an external service,\nand is by no means the actual user password. However, for\n{@link IShoppingCustomer customers} who entered the same\napplication and code as the current external system user, this is\nto determine whether to view this as a correct external system\nuser or a violation." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "citizen", - "application", - "uid", - "nickname", - "password", - "data" - ], - "nullable": true - }, - "href": { - "type": "string", - "format": "uri" - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ] - } - }, - "required": [ - "channel_code", - "external_user", - "href", - "referrer" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "setHeaders": { - "type": "object", - "properties": { - "Authorization": { - "type": "string" - } - }, - "required": [ - "Authorization" - ] - }, - "token": { - "type": "object", - "properties": { - "access": { - "type": "string" - }, - "refresh": { - "type": "string" - }, - "expired_at": { - "type": "string", - "format": "date-time" - }, - "refreshable_until": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "access", - "refresh", - "expired_at", - "refreshable_until" - ] - }, - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "setHeaders", - "token", - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ] - }, - "description": "Create a new customer record.\n\nThis shopping mall system defines everyone participating in this market as\na \"customer\". And the customer records are not archived based on individual\n{@link IShoppingCitizen people}, but based on the unit of connection.\nTherefore, even if it is the same person, a new {@link IShoppingCustomer }\nrecord is created every time a connection is made.\n\nTherefore, all Client Applications that access this service must first call\nthis function, report the customer's inflow path to the server, and create\nan {@link IShoppingCustomer.IToken.access access token}. If you skip this\nfunction call, all the other API functions would be prohibited. There is no\nexception, even if you want to {@link activate } your citizenship or\n{@link login } with your {@link IShoppingMember member account}. Before\nauthenticating yourself or logging in, be sure to call this function first.\nThis also applies when an {@link IShoppingAdministrator administrator} or\n{@link IShoppingSeller seller} logs in.\n\nAlso, the authentication token has an\n{@link IShoppingCustomer.IToken.expired_at expiration time}\nand cannot be used permanently. For reference, the authentication token is\nvalid for 3 hours, and if you want to maintain customer authentication even\nafter 3 hours, you must call the {@link refresh } function." - }, - { - "method": "post", - "path": "/shoppings/customers/authenticate/join", - "name": "shoppings_customers_authenticate_join_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "citizen": { - "type": "object", - "properties": { - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "mobile", - "name" - ], - "description": "Citizen information.", - "title": "Citizen information", - "nullable": true - }, - "email": { - "type": "string", - "format": "email", - "title": "Email address of member", - "description": "Email address of member.\n\nIf the member has multiple email addresses, just use one of them." - }, - "password": { - "type": "string", - "title": "Password of the member account", - "description": "Password of the member account." - } - }, - "required": [ - "nickname", - "citizen", - "email", - "password" - ], - "description": "Joining request info." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "description": "Join membership.\n\n{@link IShoppingCustomer Customer} signs up for\n{@link IShoppingMember membership} of current shopping mall system.\n\nIf you've performed the {@link IShoppingCitizen citizenship}\n{@link activate activation} too, then you can skip the {@link activate }\nfunction calling everytime you log in from now on. Also, if the person had\n{@link IShoppingOrder purchased} with {@link activate } and {@link external }\nfunction calling, you can also access to the order history too. In other\nwords, activity details prior to membership registration can also be\naccessed with continuity.\n\nFor reference, as described in the {@link create } function, before calling\nthis `join` function, you must first create a customer record and token by\ncalling the {@link create } function." - }, - { - "method": "put", - "path": "/shoppings/customers/authenticate/login", - "name": "shoppings_customers_authenticate_login_put", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "email": { - "type": "string", - "format": "email", - "title": "Email address of member", - "description": "Email address of member.\n\nIf the member has multiple email addresses, just use one of them." - }, - "password": { - "type": "string", - "title": "Password of the member account", - "description": "Password of the member account." - } - }, - "required": [ - "email", - "password" - ], - "description": "Login request info." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "description": "Membership login.\n\n{@link IShoppingCustomer Customer} logs in with his/her\n{@link IShoppingMember membership} account with the email and password.\n\nIf the {@link IShoppingMember member} has previously performed\n{@link activate citizenship activation}, the {@link IShoppingCustomer.citizen }\nvalue would be filled in accordingly. And if the member has also signed up\nas an {@link IShoppingAdministrator administrator} or\n{@link IShoppingSeller seller}, the relevant information is also entered\naccordingly.\n\nFor reference, as described in the {@link create } function, before calling\nthis `login` function, you must first create a customer record and token by\ncalling the {@link create } function." - }, - { - "method": "post", - "path": "/shoppings/customers/authenticate/activate", - "name": "shoppings_customers_authenticate_activate_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "mobile", - "name" - ], - "description": "Creation information of citizen verification." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "description": "Activate citizenship.\n\n{@link IShoppingCustomer Customer} activates his/her\n{@link IShoppingCitizen citizenship} with mobile number and real name.\n\nIf the custommer already {@link join joined} to the\n{@link IShoppingMember membership}, then you can skip the citizenship\n{@link activation } function calling everytime you log in from now on.\nOf course, such story would be same to the {@link external } function, too.\n\nFor reference, as described in the {@link create } function, before calling\nthis `activate` function, you must first create a customer record and token\nby calling the {@link create } function." - }, - { - "method": "post", - "path": "/shoppings/customers/authenticate/external", - "name": "shoppings_customers_authenticate_external_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "password": { - "type": "string", - "title": "Password of external user from the external system", - "description": "Password of external user from the external system.\n\nThis is a password issued to the user by an external service,\nand is by no means the actual user password. However, for\n{@link IShoppingCustomer customers} who entered the same\napplication and code as the current external system user, this is\nto determine whether to view this as a correct external system\nuser or a violation." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "citizen", - "application", - "uid", - "nickname", - "password", - "data" - ], - "description": "Creation information of external user." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "description": "Enroll external user info.\n\n{@link IShoppingCustomer Customer} enrolls his/her\n{@link IShoppingExternalUser external user} information from other service.\n\nIt has similar effect with the {@link join membership joining} function,\nso that if you've performed the {@link IShoppingCitizen citizenship}\n{@link activate activation} too, then you can skip the {@link activate }\nfunction calling everytime you call this `external` function with same\ninfo from now on. Also, if the person had\n{@link IShoppingOrder purchased} with {@link activate } and {@link join }\nfunction calling, you can also access to the order history too. In other\nwords, activity details prior to external server registration can also be\naccessed with continuity.\n\nFor reference, as described in the {@link create } function, before calling\nthis `external` function, you must first create a customer record and token\nby calling the {@link create } function." - }, - { - "method": "put", - "path": "/shoppings/customers/authenticate/password/change", - "name": "shoppings_customers_authenticate_password_change_put", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "oldbie": { - "type": "string", - "title": "Current password", - "description": "Current password." - }, - "newbie": { - "type": "string", - "title": "The new password to change", - "description": "The new password to change." - } - }, - "required": [ - "oldbie", - "newbie" - ], - "description": "Request info of password change." - } - } - } - ], - "description": "Change password.\n\nChange password of {@link IShoppingMember member} with the current password.\n\nThe reason why the current password is required is for security." - }, - { - "method": "post", - "path": "/shoppings/customers/deposits/charges", - "name": "shoppings_customers_deposits_charges_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "value": { - "type": "number" - } - }, - "required": [ - "value" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "publish": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "paid_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancelled_at": { - "type": "string", - "format": "date-time", - "nullable": true - } - }, - "required": [ - "id", - "created_at", - "paid_at", - "cancelled_at" - ], - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "value": { - "type": "number" - } - }, - "required": [ - "id", - "customer", - "publish", - "created_at", - "value" - ] - }, - "description": "Create a new deposit charge application.\n\nCreate a new {@link IShoppingDepositCharge deposit charge application}.\n\nBy the way, this function does not mean completion the deposit charge, but\nmeans just {@link IShoppingCustomer customer} is appling the deposit charge.\nThe deposit charge be completed only when customer\n{@link IShoppingDepositChargePublish.publish pay} the deposit charge." - }, - { - "method": "patch", - "path": "/shoppings/customers/deposits/charges", - "name": "shoppings_customers_deposits_charges_patch", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - }, - "minimum": { - "type": "number" - }, - "maximum": { - "type": "number" - }, - "state": { - "type": "string", - "enum": [ - "pending", - "published", - "payed", - "cancelled" - ] - }, - "publish": { - "type": "object", - "properties": { - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - }, - "payment": { - "type": "object", - "properties": { - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - } - } - } - } - } - }, - "required": [ - "state" - ] - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-value", - "-publish.created_at", - "-publish.paid_at", - "+value", - "+publish.created_at", - "+publish.paid_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - } - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "publish": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "paid_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancelled_at": { - "type": "string", - "format": "date-time", - "nullable": true - } - }, - "required": [ - "id", - "created_at", - "paid_at", - "cancelled_at" - ], - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "value": { - "type": "number" - } - }, - "required": [ - "id", - "customer", - "publish", - "created_at", - "value" - ] - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every deposit charges.\n\nList up every {@link IShoppingDepositCharge deposit charges} of the\n{@link IShoppingCustomer customer} with {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingDepositCharge.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingDepositCharge.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/customers/deposits/charges/{id}", - "name": "shoppings_customers_deposits_charges_getById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Target deposit charge's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "publish": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "paid_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancelled_at": { - "type": "string", - "format": "date-time", - "nullable": true - } - }, - "required": [ - "id", - "created_at", - "paid_at", - "cancelled_at" - ], - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "value": { - "type": "number" - } - }, - "required": [ - "id", - "customer", - "publish", - "created_at", - "value" - ] - }, - "description": "Get a deposit charge info.\n\nGet a {@link IShoppingDepositCharge deposit charge} information." - }, - { - "method": "put", - "path": "/shoppings/customers/deposits/charges/{id}", - "name": "shoppings_customers_deposits_charges_putById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Target deposit charge's " - }, - "body": { - "type": "object", - "properties": { - "value": { - "type": "number" - } - }, - "required": [ - "value" - ] - } - } - } - ], - "description": "Update a deposit charge application.\n\nUpdate value of a {@link IShoppingDepositCharge deposit charge application}\nthat has been applied by the {@link IShoppingCustomer }.\n\nIf the charge has been {@link IShoppingDepositChargePublish published},\nthen it is not possible to update the deposit charge. Only 410 gone exception\nwould be thrown." - }, - { - "method": "delete", - "path": "/shoppings/customers/deposits/charges/{id}", - "name": "shoppings_customers_deposits_charges_eraseById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Target deposit charge's " - } - } - } - ], - "description": "Erase a deposit charge application.\n\nErase a {@link IShoppingDepositCharge deposit charge application} that has been\napplied by the {@link IShoppingCustomer }.\n\nIf the charge has been {@link IShoppingDepositChargePublish published}, then\nit is not possible to erase the deposit charge. In that case, you've to cancel\nthe payment by calling the {@link publish.cancel } function." - }, - { - "method": "get", - "path": "/shoppings/customers/deposits/charges/{chargeId}/publish/able", - "name": "shoppings_customers_deposits_charges_publish_able_getByChargeid", - "parameters": [ - { - "type": "object", - "properties": { - "chargeId": { - "type": "string", - "format": "uuid", - "description": "Target charge's " - } - } - } - ], - "output": { - "type": "boolean" - }, - "description": "Check publishable.\n\nTest whether the {@link IShoppingDepositCharge charge} is publishable or not.\n\nIf the charge has not been {@link IShoppingDepositChargePublish published} and\nnot deleted yet, then it is possible to publish the charge" - }, - { - "method": "post", - "path": "/shoppings/customers/deposits/charges/{chargeId}/publish", - "name": "shoppings_customers_deposits_charges_publish_postByChargeid", - "parameters": [ - { - "type": "object", - "properties": { - "chargeId": { - "type": "string", - "format": "uuid", - "description": "Target charge's " - }, - "body": { - "type": "object", - "properties": { - "vendor": { - "type": "string" - }, - "uid": { - "type": "string" - } - }, - "required": [ - "vendor", - "uid" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "paid_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancelled_at": { - "type": "string", - "format": "date-time", - "nullable": true - } - }, - "required": [ - "id", - "created_at", - "paid_at", - "cancelled_at" - ] - }, - "description": "Publish a charge.\n\n{@link IShoppingDepositChargePublish Publish} a\n{@link IShoppingDepositCharge charge} that has been applied by the\n{@link IShoppingCustomer } with payment information gotten from the\npayment vendor system.\n\nAlso, the payment time can be different with the publish time. For example,\nif the payment method is manual bank account transfer, then the payment\nwould be delayed until the customer actually transfer the money. In that\ncase, {@link IShoppingDepositChargePublish.paid_at } would be `null` value,\nso that you have to check it after calling this publish function." - }, - { - "method": "patch", - "path": "/shoppings/customers/deposits/histories", - "name": "shoppings_customers_deposits_histories_patch", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "deposit": { - "type": "object", - "properties": { - "source": { - "type": "string" - }, - "code": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - -1, - 1 - ] - } - } - }, - "citizen_id": { - "type": "string", - "format": "uuid" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - }, - "minimum": { - "type": "number", - "minimum": 0 - }, - "maximum": { - "type": "number", - "minimum": 0 - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-deposit.source", - "-deposit.code", - "-deposit.direction", - "+deposit.source", - "+deposit.code", - "+deposit.direction", - "-history.value", - "-history.created_at", - "+history.value", - "+history.created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - } - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "deposit": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "created_at", - "code", - "source", - "direction" - ] - }, - "source_id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number" - }, - "balance": { - "type": "number" - }, - "created_at": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "id", - "citizen", - "deposit", - "source_id", - "value", - "balance", - "created_at" - ] - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every deposit histories.\n\nList up every {@link IShoppingDepositHistory deposit histories} of the\n{@link IShoppingCustomer customer} with {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingDepositHistory.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingDepositHistory.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/customers/deposits/histories/{id}", - "name": "shoppings_customers_deposits_histories_getById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "description": "" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "deposit": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "created_at", - "code", - "source", - "direction" - ] - }, - "source_id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number" - }, - "balance": { - "type": "number" - }, - "created_at": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "id", - "citizen", - "deposit", - "source_id", - "value", - "balance", - "created_at" - ] - }, - "description": "Get a deposit history info.\n\nGet a {@link IShoppingDepositHistory deposit history} information." - }, - { - "method": "get", - "path": "/shoppings/customers/deposits/histories/balance", - "name": "shoppings_customers_deposits_histories_balance_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "number" - }, - "description": "Get balance of the deposit.\n\nGet current balance of the deposit of the {@link IShoppingCustomer customer}." - }, - { - "method": "patch", - "path": "/shoppings/customers/mileages/histories", - "name": "shoppings_customers_mileages_histories_patch", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "mileage": { - "type": "object", - "properties": { - "source": { - "type": "string" - }, - "code": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - -1, - 1 - ] - } - } - }, - "citizen_id": { - "type": "string", - "format": "uuid" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - }, - "minimum": { - "type": "number", - "minimum": 0 - }, - "maximum": { - "type": "number", - "minimum": 0 - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-mileage.source", - "-mileage.code", - "-mileage.direction", - "+mileage.source", - "+mileage.code", - "+mileage.direction", - "-history.value", - "-history.created_at", - "+history.value", - "+history.created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - } - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "mileage": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "value", - "created_at", - "code", - "source", - "direction" - ] - }, - "source_id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number" - }, - "balance": { - "type": "number" - }, - "created_at": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "id", - "citizen", - "mileage", - "source_id", - "value", - "balance", - "created_at" - ] - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every mileage histories.\n\nList up every {@link IShoppingMileageHistory mileage histories} of the\n{@link IShoppingCustomer customer} with {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingMileageHistory.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingMileageHistory.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/customers/mileages/histories/{id}", - "name": "shoppings_customers_mileages_histories_getById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "description": "Target mileage history's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "mileage": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "value", - "created_at", - "code", - "source", - "direction" - ] - }, - "source_id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number" - }, - "balance": { - "type": "number" - }, - "created_at": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "id", - "citizen", - "mileage", - "source_id", - "value", - "balance", - "created_at" - ] - }, - "description": "Get a mileage history info.\n\nGet a {@link IShoppingMileageHistory mileage history} information." - }, - { - "method": "get", - "path": "/shoppings/customers/mileages/histories/balance", - "name": "shoppings_customers_mileages_histories_balance_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "number" - }, - "description": "Get balance of the mileage.\n\nGet current balance of the mileage of the {@link IShoppingCustomer customer}." - }, - { - "method": "put", - "path": "/shoppings/customers/carts/{cartId}/commodities/{id}", - "name": "shoppings_customers_carts_commodities_putByCartidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "cartId": { - "type": "string", - "format": "uuid", - "nullable": true, - "description": "Belonged cart's ID" - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target commodity's " - }, - "body": { - "type": "object", - "properties": { - "volume": { - "type": "integer", - "minimum": 1, - "title": "Volume of the commodity to purchase", - "description": "Volume of the commodity to purchase.\n\nA value indicating how many sets would be multiplied to the children\n{@link IShoppingSaleUnitStock.IInvert.quantity } values." - } - }, - "required": [ - "volume" - ], - "description": "Update information of a shopping cart commodity." - } - } - } - ], - "description": "Update a commodity (volume).\n\nUpdate a {@link IShoppingCartCommodity commodity}'s volume in the\nshopping cart.\n\nIf the *cartId* is different with the belonged cart's ID, then 404 not\nfound exception would be thrown. Otherwise, the *cartId* has `null` value,\nsuch dependency checking would be skipped, but still ownership would be\nvalidated.\n\nAlso, if target {@link IShoppingSale sale} has been suspended or\n{@link IShoppingSaleUnitStockInventory out of stock} suddenly, then 410\ngone error would be thrown, either." - }, - { - "method": "delete", - "path": "/shoppings/customers/carts/{cartId}/commodities/{id}", - "name": "shoppings_customers_carts_commodities_eraseByCartidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "cartId": { - "type": "string", - "format": "uuid", - "nullable": true, - "description": "Belonged cart's ID" - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target commodity's " - } - } - } - ], - "description": "Erase a commodity.\n\nErase a {@link IShoppingCartCommodity commodity} from the shopping cart.\n\nIf the commodity is on an {@link IShoppingOrder order} process, it is not\npossible to erase it. Instead, if the order has been\n{@link IShoppingOrderPublish published}, then it would not be appread in\nthe shopping cart more. If the order be erased, then you also can continue\nerasinng the commodity, neither." - }, - { - "method": "get", - "path": "/shoppings/customers/carts/{cartId}/commodities/{id}/replica", - "name": "shoppings_customers_carts_commodities_replica_getByCartidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "cartId": { - "type": "string", - "format": "uuid", - "nullable": true, - "description": "Belonged cart's ID" - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target commodity's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "sale_id": { - "type": "string", - "format": "uuid", - "title": "Target sale's {@link IShoppingSale.id }", - "description": "Target sale's {@link IShoppingSale.id }." - }, - "stocks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "unit_id": { - "type": "string", - "format": "uuid", - "title": "Target unit's {@link IShoppingSaleUnit.id }", - "description": "Target unit's {@link IShoppingSaleUnit.id }." - }, - "stock_id": { - "type": "string", - "format": "uuid", - "title": "Target stock's {@link IShoppingSaleUnitStock.id }", - "description": "Target stock's {@link IShoppingSaleUnitStock.id }.\n\nIt must be matched with the {@link choices } property." - }, - "choices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "option_id": { - "type": "string", - "format": "uuid", - "title": "Target option's {@link IShoppingSaleUnitOption.id }", - "description": "Target option's {@link IShoppingSaleUnitOption.id }." - }, - "candidate_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Target candidate's {@link IShoppingSaleUnitOptionCandidate.id }", - "description": "Target candidate's {@link IShoppingSaleUnitOptionCandidate.id }.\n\nWhen target option's type is `select`, then this attribute is not\n`null` but has a value." - }, - "value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - } - ], - "title": "Written value about the option", - "description": "Written value about the option.\n\nWhen target option's type is not `select`, but an atomic type value\nlike `boolean`, `number` or `string`, then this attribute is not\n`null` but has the matched atomic value." - } - }, - "required": [ - "option_id", - "candidate_id", - "value" - ], - "description": "Creation information of the choice for each option.\n\nWhen record being created, its corresponding structure would be\n{@link IShoppingSaleUnitStockChoice.IInvert }." - }, - "title": "Creation information of the choices for each option", - "description": "Creation information of the choices for each option." - }, - "quantity": { - "type": "integer", - "minimum": 1, - "title": "Quantity of the stock to purchase", - "description": "Quantity of the stock to purchase.\n\nThis value is multiplied by the {@link IShoppingCartCommodity.volume }." - } - }, - "required": [ - "unit_id", - "stock_id", - "choices", - "quantity" - ], - "description": "Creation information of the commodity stock of shopping cart.\n\nWhen record being created, its corresponding structure would be\n{@link IShoppingSaleSnapshotUnit.IInvert } and\n{@link IShoppingSaleSnapshotUnitStock.IInvert }." - }, - "minItems": 1, - "title": "List of the stocks to be purchased", - "description": "List of the stocks to be purchased." - }, - "volume": { - "type": "integer", - "minimum": 1, - "title": "Volume of the commodity to purchase", - "description": "Volume of the commodity to purchase.\n\nA value indicating how many sets would be multiplied to the children\n{@link IShoppingSaleUnitStock.IInvert.quantity } values." - }, - "accumulate": { - "type": "boolean", - "title": "Whether to accumulate the volume or not", - "description": "Whether to accumulate the volume or not.\n\nIf this attribute is not `false` and there's same commodity that\ncomposed with same stocks and options, then the volume will be\naccumulated to the existed one.\n\nOtherwise, duplicated commodity would be newly created." - } - }, - "required": [ - "sale_id", - "stocks", - "volume" - ], - "description": "Creation information of a shopping cart commodity." - }, - "description": "Get replica of a commodity.\n\nGet a {@link IShoppingCartCommodity.ICreate } typed info of the target\ncommodity for replication.\n\nBy the way, if the *cartId* is different with the belonged cart's ID,\nthen 404 not found exception would be thrown. Otherwise, the *cartId*\nhas `null` value, such dependency checking would be skipped, but still\nownership would be validated.\n\nAlso, if target {@link IShoppingSale sale} has been suspended or\n{@link IShoppingSaleUnitStockInventory out of stock} suddenly,\nthen 410 gone error would be thrown, either." - }, - { - "method": "delete", - "path": "/shoppings/customers/orders/{id}", - "name": "shoppings_customers_orders_eraseById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "description": "Target order's " - } - } - } - ], - "description": "Erase an order application.\n\nErase an order application that has been applied by the\n{@link IShoppingCustomer }.\n\nIf the order has been {@link IShoppingOrderPublish published}, then it is\nnot possible to erase the order. In that case, you've to cancel the\npayment by calling the {@link publish.cancel } function." - }, - { - "method": "put", - "path": "/shoppings/customers/orders/{orderId}/goods/{id}/confirm", - "name": "shoppings_customers_orders_goods_confirm_putByOrderidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "orderId": { - "type": "string", - "format": "uuid", - "description": "Belonged order's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target good's " - } - } - } - ], - "description": "Confirm an order good.\n\nConfirm an {@link IShoppingOrderGood order good} that has been\ncompleted {@link IShoppingDelivery delivering} to the\n{@link IShoppingCustomer customer}.\n\nIn other words, belonged {@link IShoppingOrder order} must be\n{@link IShoppingPublish.paid_at published, paid} and delivery of\nthe good must be {@link IShoppingDeliveryJourney arrived} to the\ncustomer. If not, 428 unprocessable entity error would be thrown." - }, - { - "method": "get", - "path": "/shoppings/customers/orders/{orderId}/publish/able", - "name": "shoppings_customers_orders_publish_able_getByOrderid", - "parameters": [ - { - "type": "object", - "properties": { - "orderId": { - "type": "string", - "format": "uuid", - "description": "Target order's " - } - } - } - ], - "output": { - "type": "boolean" - }, - "description": "Check publishable.\n\nTest whether the {@link IShoppingOrder order} is publishable or not.\n\nIf the order has not been {@link IShoppingOrderPublish published} and\nnot deleted yet, then it is possible to publish the order. Even thouogh\ntarget {@link IShoppingSale sale} is suspended or\n{@link IShoppingSaleUnitStockInventory out of stock}, it is still possible\nto publish because the order already has been applied." - }, - { - "method": "post", - "path": "/shoppings/customers/orders/{orderId}/publish", - "name": "shoppings_customers_orders_publish_postByOrderid", - "parameters": [ - { - "type": "object", - "properties": { - "orderId": { - "type": "string", - "format": "uuid", - "description": "Target order's " - }, - "body": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "cash" - ] - }, - "address": { - "type": "object", - "properties": { - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number to contact", - "description": "Mobile number to contact." - }, - "name": { - "type": "string", - "title": "Representative name of the address", - "description": "Representative name of the address.\n\nSometimes be receiver's name, and sometimes be place name." - }, - "country": { - "type": "string", - "title": "Country name", - "description": "Country name." - }, - "province": { - "type": "string", - "title": "Province name", - "description": "Province name." - }, - "city": { - "type": "string", - "title": "City name", - "description": "City name." - }, - "department": { - "type": "string", - "title": "Department name", - "description": "Department name." - }, - "possession": { - "type": "string", - "title": "Detailed address containing street name, building number, and room number", - "description": "Detailed address containing street name, building number, and room number." - }, - "zip_code": { - "type": "string", - "title": "Zip code, or postal code", - "description": "Zip code, or postal code." - }, - "special_note": { - "type": "string", - "nullable": true, - "title": "Special description if required", - "description": "Special description if required." - } - }, - "required": [ - "mobile", - "name", - "country", - "province", - "city", - "department", - "possession", - "zip_code", - "special_note" - ] - }, - "vendor": { - "type": "string" - }, - "uid": { - "type": "string" - } - }, - "required": [ - "type", - "address", - "vendor", - "uid" - ] - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "zero" - ] - }, - "address": { - "type": "object", - "properties": { - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number to contact", - "description": "Mobile number to contact." - }, - "name": { - "type": "string", - "title": "Representative name of the address", - "description": "Representative name of the address.\n\nSometimes be receiver's name, and sometimes be place name." - }, - "country": { - "type": "string", - "title": "Country name", - "description": "Country name." - }, - "province": { - "type": "string", - "title": "Province name", - "description": "Province name." - }, - "city": { - "type": "string", - "title": "City name", - "description": "City name." - }, - "department": { - "type": "string", - "title": "Department name", - "description": "Department name." - }, - "possession": { - "type": "string", - "title": "Detailed address containing street name, building number, and room number", - "description": "Detailed address containing street name, building number, and room number." - }, - "zip_code": { - "type": "string", - "title": "Zip code, or postal code", - "description": "Zip code, or postal code." - }, - "special_note": { - "type": "string", - "nullable": true, - "title": "Special description if required", - "description": "Special description if required." - } - }, - "required": [ - "mobile", - "name", - "country", - "province", - "city", - "department", - "possession", - "zip_code", - "special_note" - ] - } - }, - "required": [ - "type", - "address" - ] - } - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "deliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "journeys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the record", - "description": "Creation time of the record." - }, - "deleted_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Deletion time of the record", - "description": "Deletion time of the record." - }, - "type": { - "type": "string", - "enum": [ - "preparing", - "manufacturing", - "shipping", - "delivering" - ] - }, - "title": { - "type": "string", - "nullable": true, - "title": "Title of journey", - "description": "Title of journey." - }, - "description": { - "type": "string", - "nullable": true, - "title": "Description of journey", - "description": "Description of journey." - }, - "started_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Start time of the journey", - "description": "Start time of the journey." - }, - "completed_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Completion time of the journey", - "description": "Completion time of the journey." - } - }, - "required": [ - "id", - "created_at", - "deleted_at", - "type", - "title", - "description", - "started_at", - "completed_at" - ], - "description": "Journey of delivery.\n\n`IShoppingDeliveryJourney` is a subsidiary entity of {@link IShoppingDelivery },\ndescribing each journey of the delivery. For reference, the word journey\nmeans each step of the delivery process, such as preparing, shipping, and\ndelivering {@link IShoppingOrderGood goods} to the\n{@link IShoppingCustomer customer}." - }, - "title": "List of journeys of the delivery", - "description": "List of journeys of the delivery." - }, - "pieces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "publish_id": { - "type": "string", - "format": "uuid", - "title": "Target order's {@link IShoppingOrderPublish.id }", - "description": "Target order's {@link IShoppingOrderPublish.id }." - }, - "good_id": { - "type": "string", - "format": "uuid", - "title": "Target good's {@link IShoppingOrderGood.id }", - "description": "Target good's {@link IShoppingOrderGood.id }." - }, - "stock_id": { - "type": "string", - "format": "uuid", - "title": "Target stock's {@link IShoppingSaleUnitStock.id }", - "description": "Target stock's {@link IShoppingSaleUnitStock.id }." - }, - "quantity": { - "type": "number", - "minimum": 0, - "title": "Quantity of the stock", - "description": "Quantity of the stock.\n\nIt can be precision value to express splitted shipping." - } - }, - "required": [ - "id", - "publish_id", - "good_id", - "stock_id", - "quantity" - ], - "description": "Which stocks are delivered.\n\n`IShoppingDeliveryPiece` is a subsidiary entity of {@link IShoppingDelivery },\ndescribing how much quantity is delivered for each\n{@link IShoppingSaleUnitStock stock} in {@link IShoppingOrder }.\n\nFor reference, as an order can be delivered in multiple times due to volume\nor weight problem, it is possible to have multiple `IShoppingDeliveryPiece`\nrecords for a single stock." - }, - "minItems": 1, - "title": "List of pieces of the delivery", - "description": "List of pieces of the delivery." - }, - "shippers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "company": { - "type": "string", - "nullable": true - }, - "name": { - "type": "string" - }, - "mobile": { - "type": "string" - } - }, - "required": [ - "id", - "created_at", - "company", - "name", - "mobile" - ] - }, - "title": "List of shippers of the delivery", - "description": "List of shippers of the delivery." - }, - "state": { - "type": "string", - "enum": [ - "none", - "underway", - "preparing", - "manufacturing", - "shipping", - "delivering", - "arrived" - ], - "description": "State of delivery\n\n- `none`: No delivery or journey record\n- `underway`: Some pieces are over preparing, but others are not\n- `preparing`: At least preparing\n- `manufacturing`: At least manufacturing\n- `shipping`: At least shipping\n- `delivering`: At least delivering\n- `arrived`: Every pieces are arrived" - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the record", - "description": "Creation time of the record." - } - }, - "required": [ - "id", - "seller", - "journeys", - "pieces", - "shippers", - "state", - "created_at" - ], - "description": "Delivery information.\n\nWhen delivering {@link IShoppingOrderGood goods} to\n{@link IShoppingCustomer customer}, {@link IShoppingSeller seller} can deliver\nmultiple {@link IShoppingSaleUnitStock stocks}, goods at once. Also, it is\npossible to deliver a stock or good in multiple times due to physical restriction\nlike volume or weight problem.\n\nAs you can see from above, the relationship between delivery with\n{@link IShoppingOrder order} (or {@link IShoppingOrderGood good}) is not 1: 1 or\nN: 1, but M: N. Entity `IShoppingDelivery` has been designed to represent such\nrelationship, by referencing target stocks or goods through subsidiary entity\n{@link IShoppingDeliveryPiece }.\n\nAlso, delivery does not end with only one step. It has multiple processes like\nmanufacturing, planning, shipping and delivering. Those steps are represented by\nanother subsidiary entity {@link IShoppingDeliveryJourney }." - }, - "title": "List of deliveries", - "description": "List of deliveries.\n\nAn {@link IShoppingOrder order} can be delivered in multiple times.\nOf course, the opposite case is also possible, that a\n{@link IShoppingDelivery delivery} can be composed of multiple orders." - }, - "state": { - "type": "string", - "enum": [ - "none", - "underway", - "preparing", - "manufacturing", - "shipping", - "delivering", - "arrived" - ], - "description": "State of delivery\n\n- `none`: No delivery or journey record\n- `underway`: Some pieces are over preparing, but others are not\n- `preparing`: At least preparing\n- `manufacturing`: At least manufacturing\n- `shipping`: At least shipping\n- `delivering`: At least delivering\n- `arrived`: Every pieces are arrived" - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the record", - "description": "Creation time of the record." - }, - "paid_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Time when the order was paid", - "description": "Time when the order was paid." - }, - "cancelled_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Time when the payment was cancelled", - "description": "Time when the payment was cancelled." - }, - "address": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number to contact", - "description": "Mobile number to contact." - }, - "name": { - "type": "string", - "title": "Representative name of the address", - "description": "Representative name of the address.\n\nSometimes be receiver's name, and sometimes be place name." - }, - "country": { - "type": "string", - "title": "Country name", - "description": "Country name." - }, - "province": { - "type": "string", - "title": "Province name", - "description": "Province name." - }, - "city": { - "type": "string", - "title": "City name", - "description": "City name." - }, - "department": { - "type": "string", - "title": "Department name", - "description": "Department name." - }, - "possession": { - "type": "string", - "title": "Detailed address containing street name, building number, and room number", - "description": "Detailed address containing street name, building number, and room number." - }, - "zip_code": { - "type": "string", - "title": "Zip code, or postal code", - "description": "Zip code, or postal code." - }, - "special_note": { - "type": "string", - "nullable": true, - "title": "Special description if required", - "description": "Special description if required." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name", - "country", - "province", - "city", - "department", - "possession", - "zip_code", - "special_note" - ], - "description": "The address information." - } - }, - "required": [ - "deliveries", - "state", - "id", - "created_at", - "paid_at", - "cancelled_at", - "address" - ], - "description": "Order completion and payment information.\n\n`IShoppingOrderPublish` is an entity that embodies the series of processes\nin which a {@link IShoppingCustomer customer} pays for his or her\n{@link IShoppingOrder order}, thereby completing the order. And only after\nthe order is {@link paid_at completed}, can the {@link IShoppingSeller seller}\nrecognize that the customer has purchased his product.\n\nBy the way, please note that just because the `IShoppingOrderPublish` record\nexists, it does not mean that the payment has been completed. Of course, with\n\"credit cards\" and \"Google Pay\", payment application and payment occur at the\nsame time. However, there are some cases where payment is made after the\npayment application, such as \"bank transfer\" or \"virtual account payment\".\nTherefore, to see the completion of payment, be sure to check the\n{@link paid_at } property.\n\nIn addition, even after payment has been made, there may be cases where it is\nsuddenly cancelled, so please be aware of this as well." - }, - "description": "Publish an order.\n\n{@link IShoppingOrderPublish Publish} an {@link IShoppingOrder order} that\nhas been applied by the {@link IShoppingCustomer } with\n{@link IShoppingAddress address} to delivery and payment information gotten\nfrom the payment vendor system.\n\nIf the order has been discounted for entire order price, then no need\nto send payment vendor info. Instead, only address info is required.\n\nAlso, the payment time can be different with the publish time. For example,\nif the payment method is manual bank account transfer, then the payment\nwould be delayed until the customer actually transfer the money. In that\ncase, {@link IShoppingOrderPublish.paid_at } would be `null` value, so\nthat you have to check it after calling this publish function." - }, - { - "method": "delete", - "path": "/shoppings/customers/orders/{orderId}/publish", - "name": "shoppings_customers_orders_publish_eraseByOrderid", - "parameters": [ - { - "type": "object", - "properties": { - "orderId": { - "type": "string", - "format": "uuid", - "description": "Target order's " - } - } - } - ], - "description": "Cancel the publish (payment).\n\nCancel payment of an {@link IShoppingOrder order} that has been\n{@link IShoppingOrderPublish published}.\n\nIf target publish's payment method is manual bank account transfer,\nthen it would be cancelled directly. If not, then payment cancel\nrequest would be sent to the payment vendor system." - }, - { - "method": "post", - "path": "/shoppings/customers/sales/{saleId}/questions/{inquiryId}/comments", - "name": "shoppings_customers_sales_questions_comments_postBySaleidAndInquiryid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Target inquiry's " - }, - "body": { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales." - }, - { - "method": "patch", - "path": "/shoppings/customers/sales/{saleId}/questions/{inquiryId}/comments", - "name": "shoppings_customers_sales_questions_comments_patchBySaleidAndInquiryid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "body": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the comments with pagination and searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales." - }, - { - "method": "get", - "path": "/shoppings/customers/sales/{saleId}/questions/{inquiryId}/comments/{id}", - "name": "shoppings_customers_sales_questions_comments_getBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales." - }, - { - "method": "put", - "path": "/shoppings/customers/sales/{saleId}/questions/{inquiryId}/comments/{id}", - "name": "shoppings_customers_sales_questions_comments_putBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - }, - "body": { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot content of the comment." - }, - "description": "Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." - }, - { - "method": "post", - "path": "/shoppings/customers/sales/{saleId}/questions", - "name": "shoppings_customers_sales_questions_postBySaleid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "body": { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "secret", - "format", - "title", - "body", - "files" - ], - "description": "Creation information of the question." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "type": { - "type": "string", - "enum": [ - "question" - ], - "title": "Type of the derived inquiry", - "description": "Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion }\n- `review`: {@link IShoppingSaleReview }" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "seller", - "id", - "snapshots", - "created_at" - ], - "description": "Formal answer for the inquiry by the seller.", - "title": "Formal answer for the inquiry by the seller", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "secret", - "type", - "customer", - "answer", - "read_by_seller", - "id", - "snapshots", - "created_at" - ], - "description": "Question about sale snapshot.\n\n`IShoppingSaleQuestion` is a subtype entity of {@link IShoppingSaleInquiry },\nand is used when a {@link IShoppingCustomer customer} wants to ask something\nabout a {@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at\nthe time) registered by the {@link IShoppingSeller seller}.\n\nAnd, like most shopping malls, `IShoppingSaleQuestion` also provides\na {@link secret } attribute, allowing you to create a \"secret message\" that can\nonly be viewed by the seller and the customer who wrote the question." - }, - "description": "Write a question article.\n\nWhen a {@link IShoppingCustomer customer} wants to ask something about\na specific {@link IShoppingSale sale}, he/she can ask it by writing a\nnew {@link IShoppingSaleQuestion question article}.\n\nIf the customer does not want to reveal his/her identify and question,\nhe/she can write the question as a secret article. In that case, only\nthe customer and the related {@link IShoppingSeller seller} can see\nthe {@link at detailed content}. Also, such secret question's title and\nwriter name would be masked with `*` characters in the\n{@link index pagiation API}." - }, - { - "method": "patch", - "path": "/shoppings/customers/sales/{saleId}/questions", - "name": "shoppings_customers_sales_questions_patchBySaleid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "secret", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at" - ], - "description": "Summarized information of the question." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every summarized questions.\n\nList up every {@link IShoppingSaleQuestion.ISummary summarized questions} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned questions are summarized, not detailed. If you want\nto get the detailed information of a question, use {@link adridges } function\nor {@link at } function for each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.ISummary.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.ISummary.secret } with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/customers/sales/{saleId}/questions/{id}", - "name": "shoppings_customers_sales_questions_getBySaleidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target question's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "type": { - "type": "string", - "enum": [ - "question" - ], - "title": "Type of the derived inquiry", - "description": "Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion }\n- `review`: {@link IShoppingSaleReview }" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "seller", - "id", - "snapshots", - "created_at" - ], - "description": "Formal answer for the inquiry by the seller.", - "title": "Formal answer for the inquiry by the seller", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "secret", - "type", - "customer", - "answer", - "read_by_seller", - "id", - "snapshots", - "created_at" - ], - "description": "Question about sale snapshot.\n\n`IShoppingSaleQuestion` is a subtype entity of {@link IShoppingSaleInquiry },\nand is used when a {@link IShoppingCustomer customer} wants to ask something\nabout a {@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at\nthe time) registered by the {@link IShoppingSeller seller}.\n\nAnd, like most shopping malls, `IShoppingSaleQuestion` also provides\na {@link secret } attribute, allowing you to create a \"secret message\" that can\nonly be viewed by the seller and the customer who wrote the question." - }, - "description": "Get a question info.\n\nGet a detailed {@link IShoppingSaleQuestion question} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s question. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nquestions of the sales except the {@link IShoppingSaleQuestion.secret }\nvalue is `false`." - }, - { - "method": "post", - "path": "/shoppings/customers/sales/{saleId}/questions/{id}", - "name": "shoppings_customers_sales_questions_postBySaleidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target question's " - }, - "body": { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "title", - "body", - "files" - ], - "description": "Creation information of the article." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "description": "Update a question.\n\nUpdate a {@link IShoppingSaleQuestion question}'s content.\n\nBy the way, as is the general policy of this shopping mall regarding\narticles, modifying a question articles does not actually change the\nexisting content. Modified content is accumulated and recorded in the\nexisting article record as a new\n{@link IShoppingSaleQuestion.ISnapshot snapshot}. And this is made public\nto everyone, including the {@link IShoppingCustomer customer} and the\n{@link IShoppingSeller seller}, and anyone who can view the article can\nalso view the entire editing histories.\n\nThis is to prevent customers or sellers from modifying their articles and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." - }, - { - "method": "patch", - "path": "/shoppings/customers/sales/{saleId}/questions/abridges", - "name": "shoppings_customers_sales_questions_abridges_patchBySaleid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "secret", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "description": "Abridged information of the question." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every abridged questions.\n\nList up every {@link IShoppingSaleQuestion.IAbridge abridged questions} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned questions are abridged, not detailed. If you want\nto get the detailed information of a question, use {@link at } function\nfor each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.IAridge.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.IAridge.secret } with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." - }, - { - "method": "post", - "path": "/shoppings/customers/sales/{saleId}/reviews/{inquiryId}/comments", - "name": "shoppings_customers_sales_reviews_comments_postBySaleidAndInquiryid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Target inquiry's " - }, - "body": { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales." - }, - { - "method": "patch", - "path": "/shoppings/customers/sales/{saleId}/reviews/{inquiryId}/comments", - "name": "shoppings_customers_sales_reviews_comments_patchBySaleidAndInquiryid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "body": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the comments with pagination and searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales." - }, - { - "method": "get", - "path": "/shoppings/customers/sales/{saleId}/reviews/{inquiryId}/comments/{id}", - "name": "shoppings_customers_sales_reviews_comments_getBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales." - }, - { - "method": "put", - "path": "/shoppings/customers/sales/{saleId}/reviews/{inquiryId}/comments/{id}", - "name": "shoppings_customers_sales_reviews_comments_putBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - }, - "body": { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot content of the comment." - }, - "description": "Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." - }, - { - "method": "post", - "path": "/shoppings/customers/sales/{saleId}/reviews", - "name": "shoppings_customers_sales_reviews_postBySaleid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "body": { - "type": "object", - "properties": { - "good_id": { - "type": "string", - "format": "uuid", - "title": "Target good's {@link IShoppingOrderGood.id }", - "description": "Target good's {@link IShoppingOrderGood.id }." - }, - "score": { - "type": "number", - "minimum": 0, - "maximum": 100, - "title": "Score of the review", - "description": "Score of the review." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "good_id", - "score", - "format", - "title", - "body", - "files" - ], - "description": "Creation information of the review." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "review" - ], - "title": "Type of the derived inquiry", - "description": "Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion }\n- `review`: {@link IShoppingSaleReview }" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "seller", - "id", - "snapshots", - "created_at" - ], - "description": "Formal answer for the inquiry by the seller.", - "title": "Formal answer for the inquiry by the seller", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "score": { - "type": "number", - "minimum": 0, - "maximum": 100, - "title": "Score of the review", - "description": "Score of the review." - }, - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "score", - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot content of the review article." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "type", - "customer", - "answer", - "read_by_seller", - "id", - "snapshots", - "created_at" - ], - "description": "Reviews for sale snapshots.\n\n`IShoppingSaleReview` is a subtype entity of {@link IShoppingSaleInquiry },\nand is used when a {@link IShoppingCustomer customer} purchases a\n{@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at the time)\nregistered by the {@link IShoppingSeller seller} as a product and leaves a\nreview and rating for it.\n\nFor reference, `IShoppingSaleReview` and\n{@link IShoppingOrderGod shopping_order_goods} have a logarithmic relationship\nof N: 1, but this does not mean that customers can continue to write reviews\nfor the same product indefinitely. Wouldn't there be restrictions, such as\nif you write a review once, you can write an additional review a month later?" - }, - "description": "Write a review article.\n\nWhen a {@link IShoppingCustomer customer} has purchased a specific\n{@link IShoppingSale sale} and get {@link IShoppingDelivery delivered} it,\nhe/she can write a {@link IShoppingSaleReview review} article about the sale.\n\nIf try to write a review article without purchasing or the delivery has not\nbeen completed, 428 unprocessable entity error would be thrown. Also, the\ncustomer can write multiple review articles per an order, but the next\narticle can be written after 2 weeks from the previous article. If not,\n428 unprocessable entity error would be thrown, either." - }, - { - "method": "patch", - "path": "/shoppings/customers/sales/{saleId}/reviews", - "name": "shoppings_customers_sales_reviews_patchBySaleid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - }, - "minimum": { - "type": "number", - "minimum": 0, - "maximum": 100 - }, - "maximum": { - "type": "number", - "minimum": 0, - "maximum": 100 - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at", - "-score", - "+score" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "score": { - "type": "number", - "title": "Score of the review", - "description": "Score of the review." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "score", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at" - ], - "description": "Summarized information of the review." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every summarized reviews.\n\nList up every {@link IShoppingSaleReview.ISummary summarized reviews} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned reviews are summarized, not detailed. If you want\nto get the detailed information of a review, use {@link adridges } function\nor {@link at } function for each article.\n\nAlso, returned review has {@link IShoppingSaleReview.ISummary.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/customers/sales/{saleId}/reviews/{id}", - "name": "shoppings_customers_sales_reviews_getBySaleidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target review's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "review" - ], - "title": "Type of the derived inquiry", - "description": "Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion }\n- `review`: {@link IShoppingSaleReview }" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "seller", - "id", - "snapshots", - "created_at" - ], - "description": "Formal answer for the inquiry by the seller.", - "title": "Formal answer for the inquiry by the seller", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "score": { - "type": "number", - "minimum": 0, - "maximum": 100, - "title": "Score of the review", - "description": "Score of the review." - }, - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "score", - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot content of the review article." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "type", - "customer", - "answer", - "read_by_seller", - "id", - "snapshots", - "created_at" - ], - "description": "Reviews for sale snapshots.\n\n`IShoppingSaleReview` is a subtype entity of {@link IShoppingSaleInquiry },\nand is used when a {@link IShoppingCustomer customer} purchases a\n{@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at the time)\nregistered by the {@link IShoppingSeller seller} as a product and leaves a\nreview and rating for it.\n\nFor reference, `IShoppingSaleReview` and\n{@link IShoppingOrderGod shopping_order_goods} have a logarithmic relationship\nof N: 1, but this does not mean that customers can continue to write reviews\nfor the same product indefinitely. Wouldn't there be restrictions, such as\nif you write a review once, you can write an additional review a month later?" - }, - "description": "Get a review info.\n\nGet a detailed {@link IShoppingSaleReview review} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s review. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nreviews of the sales." - }, - { - "method": "post", - "path": "/shoppings/customers/sales/{saleId}/reviews/{id}", - "name": "shoppings_customers_sales_reviews_postBySaleidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target review's " - }, - "body": { - "type": "object", - "properties": { - "score": { - "type": "number", - "minimum": 0, - "maximum": 100, - "title": "Score of the review", - "description": "Score of the review." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "score", - "format", - "title", - "body", - "files" - ], - "description": "Updating information of the review." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "score": { - "type": "number", - "minimum": 0, - "maximum": 100, - "title": "Score of the review", - "description": "Score of the review." - }, - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "score", - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot content of the review article." - }, - "description": "Update a review.\n\nUpdadte a {@link IShoppingSaleReview review}'s content and score.\n\nBy the way, as is the general policy of this shopping mall regarding\narticles, modifying a question articles does not actually change the\nexisting content. Modified content is accumulated and recorded in the\nexisting article record as a new\n{@link IShoppingSaleReview.ISnapshot snapshot}. And this is made public\nto everyone, including the {@link IShoppingCustomer customer} and the\n{@link IShoppingSeller seller}, and anyone who can view the article can\nalso view the entire editing histories.\n\nThis is to prevent customers or sellers from modifying their articles and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." - }, - { - "method": "patch", - "path": "/shoppings/customers/sales/{saleId}/reviews/abridges", - "name": "shoppings_customers_sales_reviews_abridges_patchBySaleid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - }, - "minimum": { - "type": "number", - "minimum": 0, - "maximum": 100 - }, - "maximum": { - "type": "number", - "minimum": 0, - "maximum": 100 - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at", - "-score", - "+score" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "score": { - "type": "number", - "minimum": 0, - "maximum": 100, - "title": "Score of the review", - "description": "Score of the review." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "score", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "description": "Abridged information of the review." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every abridged reviews.\n\nList up every {@link IShoppingSaleReview.IAbridge abridged reviews} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned reviews are abridged, not detailed. If you want\nto get the detailed information of a review, use {@link at } function\nfor each article.\n\nAlso, returned review has {@link IShoppingSaleReview.IAridge.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." - }, - { - "method": "patch", - "path": "/shoppings/customers/systematic/channels", - "name": "shoppings_customers_systematic_channels_patch", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-channel.code", - "-channel.name", - "-channel.created_at", - "+channel.code", - "+channel.name", - "+channel.created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the channels with pagination and searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every channels.\n\nList up every {@link IShoppingChannel channels} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingChannel.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingChannel.IRequest.sort sort condition}." - }, - { - "method": "patch", - "path": "/shoppings/customers/systematic/sections", - "name": "shoppings_customers_systematic_sections_patch", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-section.code", - "-section.name", - "-section.created_at", - "+section.code", - "+section.name", - "+section.created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the sections with pagination and searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "code", - "name", - "created_at" - ], - "description": "Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every sections.\n\nList up every {@link IShoppingSection sections} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSection.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingSection.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/customers/systematic/sections/{id}", - "name": "shoppings_customers_systematic_sections_getById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "description": "Target section's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "code", - "name", - "created_at" - ], - "description": "Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future." - }, - "description": "Get a section info.\n\nGet a detailed {@link IShoppingSection section} information." - }, - { - "method": "get", - "path": "/shoppings/customers/systematic/sections/{code}/get", - "name": "shoppings_customers_systematic_sections_get_getByCode", - "parameters": [ - { - "type": "object", - "properties": { - "code": { - "type": "string", - "description": "Target section's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "code", - "name", - "created_at" - ], - "description": "Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future." - }, - "description": "Get a section info by its code.\n\nGet a detailed {@link IShoppingSection section} information by its code." - }, - { - "method": "get", - "path": "/shoppings/sellers/authenticate", - "name": "shoppings_sellers_authenticate_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - "description": "Get seller information.\n\nGet {@link IShoppingSeller.IInvert seller} information of\ncurrent {@link IShoppingCustomer customer}.\n\nIf current {@link IShoppingMember member} is not an seller,\nit throws 403 forbidden exception." - }, - { - "method": "post", - "path": "/shoppings/sellers/authenticate", - "name": "shoppings_sellers_authenticate_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": {} - } - } - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - "description": "Join as an seller.\n\nJoin as an seller with {@link IShoppingSeller.IJoin joining info}.\n\nThis method is allowed only when the {@link IShoppingCustomer customer} already\nhas joined the {@link IShoppingMember membership}. IF not, he (she) must\naccomplish it before. If not, 403 forbidden exception would be thrown." - }, - { - "method": "put", - "path": "/shoppings/sellers/authenticate/login", - "name": "shoppings_sellers_authenticate_login_put", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "email": { - "type": "string", - "format": "email", - "title": "Email address of member", - "description": "Email address of member.\n\nIf the member has multiple email addresses, just use one of them." - }, - "password": { - "type": "string", - "title": "Password of the member account", - "description": "Password of the member account." - } - }, - "required": [ - "email", - "password" - ], - "description": "Login request info." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - "description": "Login as an seller.\n\nLogin as an seller with {@link IShoppingSeller.ILogin login info}.\n\nThis method has exactly same effect with\n{@link ShoppingApi.functional.customers.authenticate.login } function, but\nreturned type is a llttle different. The similar function returns\n{@link IShoppingCustomer } type that starting from the customer information, so\nthat you have to access to the seller info through\n`customer.member.seller`. In contrast with that, this method returns\n{@link IShoppingSeller.IInvert } type that starting from the seller\ninfo, so that can access to the customer info through `seller.customer`.\n\nOf course, to use this function, you had to {@link join } as an seller\nbefore. If not, 403 forbidden exception would be thrown," - }, - { - "method": "post", - "path": "/shoppings/sellers/deliveries", - "name": "shoppings_sellers_deliveries_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "pieces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "publish_id": { - "type": "string", - "format": "uuid", - "title": "Target order's {@link IShoppingOrderPublish.id }", - "description": "Target order's {@link IShoppingOrderPublish.id }." - }, - "good_id": { - "type": "string", - "format": "uuid", - "title": "Target good's {@link IShoppingOrderGood.id }", - "description": "Target good's {@link IShoppingOrderGood.id }." - }, - "stock_id": { - "type": "string", - "format": "uuid", - "title": "Target stock's {@link IShoppingSaleUnitStock.id }", - "description": "Target stock's {@link IShoppingSaleUnitStock.id }." - }, - "quantity": { - "type": "number", - "minimum": 0, - "title": "Quantity of the stock", - "description": "Quantity of the stock.\n\nIt can be precision value to express splitted shipping." - } - }, - "required": [ - "publish_id", - "good_id", - "stock_id", - "quantity" - ], - "description": "Creation information of the delivery piece." - }, - "minItems": 1, - "title": "List of pieces of the delivery", - "description": "List of pieces of the delivery." - }, - "journeys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "preparing", - "manufacturing", - "shipping", - "delivering" - ], - "title": "Type of journey", - "description": "Type of journey.\n\n- preparing\n- manufacturing\n- shipping\n- delivering" - }, - "title": { - "type": "string", - "nullable": true, - "title": "Title of journey", - "description": "Title of journey." - }, - "description": { - "type": "string", - "nullable": true, - "title": "Description of journey", - "description": "Description of journey." - }, - "started_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Start time of the journey", - "description": "Start time of the journey." - }, - "completed_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Completion time of the journey", - "description": "Completion time of the journey." - } - }, - "required": [ - "type", - "title", - "description", - "started_at", - "completed_at" - ], - "description": "Creation information of the delivery journey." - }, - "title": "List of journeys of the delivery", - "description": "List of journeys of the delivery.\n\nThis is initial data, and it is also possible to accumulate journey data\nafter the delivery creation." - }, - "shippers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "company": { - "type": "string", - "nullable": true - }, - "name": { - "type": "string" - }, - "mobile": { - "type": "string" - } - }, - "required": [ - "company", - "name", - "mobile" - ] - }, - "title": "List of shippers of the delivery", - "description": "List of shippers of the delivery." - } - }, - "required": [ - "pieces", - "journeys", - "shippers" - ], - "description": "Creation information of the delivery." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "journeys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the record", - "description": "Creation time of the record." - }, - "deleted_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Deletion time of the record", - "description": "Deletion time of the record." - }, - "type": { - "type": "string", - "enum": [ - "preparing", - "manufacturing", - "shipping", - "delivering" - ] - }, - "title": { - "type": "string", - "nullable": true, - "title": "Title of journey", - "description": "Title of journey." - }, - "description": { - "type": "string", - "nullable": true, - "title": "Description of journey", - "description": "Description of journey." - }, - "started_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Start time of the journey", - "description": "Start time of the journey." - }, - "completed_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Completion time of the journey", - "description": "Completion time of the journey." - } - }, - "required": [ - "id", - "created_at", - "deleted_at", - "type", - "title", - "description", - "started_at", - "completed_at" - ], - "description": "Journey of delivery.\n\n`IShoppingDeliveryJourney` is a subsidiary entity of {@link IShoppingDelivery },\ndescribing each journey of the delivery. For reference, the word journey\nmeans each step of the delivery process, such as preparing, shipping, and\ndelivering {@link IShoppingOrderGood goods} to the\n{@link IShoppingCustomer customer}." - }, - "title": "List of journeys of the delivery", - "description": "List of journeys of the delivery." - }, - "pieces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "publish_id": { - "type": "string", - "format": "uuid", - "title": "Target order's {@link IShoppingOrderPublish.id }", - "description": "Target order's {@link IShoppingOrderPublish.id }." - }, - "good_id": { - "type": "string", - "format": "uuid", - "title": "Target good's {@link IShoppingOrderGood.id }", - "description": "Target good's {@link IShoppingOrderGood.id }." - }, - "stock_id": { - "type": "string", - "format": "uuid", - "title": "Target stock's {@link IShoppingSaleUnitStock.id }", - "description": "Target stock's {@link IShoppingSaleUnitStock.id }." - }, - "quantity": { - "type": "number", - "minimum": 0, - "title": "Quantity of the stock", - "description": "Quantity of the stock.\n\nIt can be precision value to express splitted shipping." - } - }, - "required": [ - "id", - "publish_id", - "good_id", - "stock_id", - "quantity" - ], - "description": "Which stocks are delivered.\n\n`IShoppingDeliveryPiece` is a subsidiary entity of {@link IShoppingDelivery },\ndescribing how much quantity is delivered for each\n{@link IShoppingSaleUnitStock stock} in {@link IShoppingOrder }.\n\nFor reference, as an order can be delivered in multiple times due to volume\nor weight problem, it is possible to have multiple `IShoppingDeliveryPiece`\nrecords for a single stock." - }, - "minItems": 1, - "title": "List of pieces of the delivery", - "description": "List of pieces of the delivery." - }, - "shippers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "company": { - "type": "string", - "nullable": true - }, - "name": { - "type": "string" - }, - "mobile": { - "type": "string" - } - }, - "required": [ - "id", - "created_at", - "company", - "name", - "mobile" - ] - }, - "title": "List of shippers of the delivery", - "description": "List of shippers of the delivery." - }, - "state": { - "type": "string", - "enum": [ - "none", - "underway", - "preparing", - "manufacturing", - "shipping", - "delivering", - "arrived" - ], - "description": "State of delivery\n\n- `none`: No delivery or journey record\n- `underway`: Some pieces are over preparing, but others are not\n- `preparing`: At least preparing\n- `manufacturing`: At least manufacturing\n- `shipping`: At least shipping\n- `delivering`: At least delivering\n- `arrived`: Every pieces are arrived" - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the record", - "description": "Creation time of the record." - } - }, - "required": [ - "id", - "seller", - "journeys", - "pieces", - "shippers", - "state", - "created_at" - ], - "description": "Delivery information.\n\nWhen delivering {@link IShoppingOrderGood goods} to\n{@link IShoppingCustomer customer}, {@link IShoppingSeller seller} can deliver\nmultiple {@link IShoppingSaleUnitStock stocks}, goods at once. Also, it is\npossible to deliver a stock or good in multiple times due to physical restriction\nlike volume or weight problem.\n\nAs you can see from above, the relationship between delivery with\n{@link IShoppingOrder order} (or {@link IShoppingOrderGood good}) is not 1: 1 or\nN: 1, but M: N. Entity `IShoppingDelivery` has been designed to represent such\nrelationship, by referencing target stocks or goods through subsidiary entity\n{@link IShoppingDeliveryPiece }.\n\nAlso, delivery does not end with only one step. It has multiple processes like\nmanufacturing, planning, shipping and delivering. Those steps are represented by\nanother subsidiary entity {@link IShoppingDeliveryJourney }." - }, - "description": "Create a delivery.\n\nCreate a {@link IShoppingDelivery delivery} record targetting\n{@link IShoppingOrder orders}, their {@link IShoppingOrderGood goods} and\n{@link IShoppingSaleUnitStock stocks} ({@link IShoppingDeliveryPiece }) with\n{@link IShoppingDeliveryJourney journeys} and\n{@link IShoppingDeliveryShipper shippers} info.\n\nNote that, composition of the {@link IShoppingDeliveryPiece } must not over\nthe required. To identify which pieces are required, recommend to call\nthe {@link incompletes } function with target orders'\n{@link IShoppingOrderPublish.id }s before calling this one." - }, - { - "method": "patch", - "path": "/shoppings/sellers/deliveries/incompletes", - "name": "shoppings_sellers_deliveries_incompletes_patch", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "publish_ids": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - } - } - }, - "required": [ - "publish_ids" - ] - } - } - } - ], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "publish_id": { - "type": "string", - "format": "uuid", - "title": "Target order's {@link IShoppingOrderPublish.id }", - "description": "Target order's {@link IShoppingOrderPublish.id }." - }, - "good_id": { - "type": "string", - "format": "uuid", - "title": "Target good's {@link IShoppingOrderGood.id }", - "description": "Target good's {@link IShoppingOrderGood.id }." - }, - "stock_id": { - "type": "string", - "format": "uuid", - "title": "Target stock's {@link IShoppingSaleUnitStock.id }", - "description": "Target stock's {@link IShoppingSaleUnitStock.id }." - }, - "quantity": { - "type": "number", - "minimum": 0, - "title": "Quantity of the stock", - "description": "Quantity of the stock.\n\nIt can be precision value to express splitted shipping." - } - }, - "required": [ - "publish_id", - "good_id", - "stock_id", - "quantity" - ], - "description": "Creation information of the delivery piece." - } - }, - "description": "Get list of incomplete pieces.\n\nGet list of {@link IShoppingDeliveryPiece incomplete pieces} of target\norders' {@link IShoppingOrderPublish.id }s.\n\nIf you specify target orders' publish IDs, then this function returns\nincompleted pieces of the orders with computation as an Array of\n{@link IShoppingDeliveryPiece.ICreate } type.\n\nYou can utillize the result to make a huge {@link IShoppingDelivery delivery}\nfor integrated delivering, and also possible to make multiple deliveries for\nsplitted delivering." - }, - { - "method": "post", - "path": "/shoppings/sellers/deliveries/{deliveryId}/journeys", - "name": "shoppings_sellers_deliveries_journeys_postByDeliveryid", - "parameters": [ - { - "type": "object", - "properties": { - "deliveryId": { - "type": "string", - "format": "uuid", - "description": "Belonged delivery's " - }, - "body": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "preparing", - "manufacturing", - "shipping", - "delivering" - ], - "title": "Type of journey", - "description": "Type of journey.\n\n- preparing\n- manufacturing\n- shipping\n- delivering" - }, - "title": { - "type": "string", - "nullable": true, - "title": "Title of journey", - "description": "Title of journey." - }, - "description": { - "type": "string", - "nullable": true, - "title": "Description of journey", - "description": "Description of journey." - }, - "started_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Start time of the journey", - "description": "Start time of the journey." - }, - "completed_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Completion time of the journey", - "description": "Completion time of the journey." - } - }, - "required": [ - "type", - "title", - "description", - "started_at", - "completed_at" - ], - "description": "Creation information of the delivery journey." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the record", - "description": "Creation time of the record." - }, - "deleted_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Deletion time of the record", - "description": "Deletion time of the record." - }, - "type": { - "type": "string", - "enum": [ - "preparing", - "manufacturing", - "shipping", - "delivering" - ] - }, - "title": { - "type": "string", - "nullable": true, - "title": "Title of journey", - "description": "Title of journey." - }, - "description": { - "type": "string", - "nullable": true, - "title": "Description of journey", - "description": "Description of journey." - }, - "started_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Start time of the journey", - "description": "Start time of the journey." - }, - "completed_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Completion time of the journey", - "description": "Completion time of the journey." - } - }, - "required": [ - "id", - "created_at", - "deleted_at", - "type", - "title", - "description", - "started_at", - "completed_at" - ], - "description": "Journey of delivery.\n\n`IShoppingDeliveryJourney` is a subsidiary entity of {@link IShoppingDelivery },\ndescribing each journey of the delivery. For reference, the word journey\nmeans each step of the delivery process, such as preparing, shipping, and\ndelivering {@link IShoppingOrderGood goods} to the\n{@link IShoppingCustomer customer}." - }, - "description": "Create a new journey.\n\nCreate a new {@link IShoppingDeliveryJourney journey} of the\n{@link IShoppingDelivery delivery}.\n\nThis action may change the related {@link IShoppingOrderGood.state }.\nAlso, if the target journey's type is \"delivering\", whether the property\n{@link IShoppingDeliveryJourney.completed_at } is null or not affects to\nthe related goods' states. If the property is not null, the state becomes\n\"arrived\". Otherwise, the state becomes \"delivering\"." - }, - { - "method": "put", - "path": "/shoppings/sellers/deliveries/{deliveryId}/journeys/{id}/complete", - "name": "shoppings_sellers_deliveries_journeys_complete_putByDeliveryidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "deliveryId": { - "type": "string", - "format": "uuid", - "description": "Belonged delivery's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target journey's " - }, - "body": { - "type": "object", - "properties": { - "completed_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Completion time of the journey", - "description": "Completion time of the journey." - } - }, - "required": [ - "completed_at" - ], - "description": "Completion information of the delivery journey." - } - } - } - ], - "description": "Complete a journey.\n\nComplete a {@link IShoppingDeliveryJourney journey} of the\n{@link IShoppingDelivery delivery}. In other words, fills the\n{@link IShoppingDeliveryJourney.completed_at } property with current time.\n\nIf the target journey's type is \"delivering\", this action may change\nthe related {@link IShoppingOrderGood.state goods' states} to be \"arrived\"." - }, - { - "method": "delete", - "path": "/shoppings/sellers/deliveries/{deliveryId}/journeys/{id}", - "name": "shoppings_sellers_deliveries_journeys_eraseByDeliveryidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "deliveryId": { - "type": "string", - "format": "uuid", - "description": "Belonged delivery's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target journey's " - } - } - } - ], - "description": "Erase a journey.\n\nErase a {@link IShoppingDeliveryJourney journey} of the\n{@link IShoppingDelivery delivery}.\n\nIf erasing journey is the last one of the belonged delivery, this action\nmay change the related {@link IShoppingOrderGood.state }. By erasing the last\njourney, the state rolls back to the previous." - }, - { - "method": "post", - "path": "/shoppings/sellers/deliveries/{deliveryId}/shippers", - "name": "shoppings_sellers_deliveries_shippers_postByDeliveryid", - "parameters": [ - { - "type": "object", - "properties": { - "deliveryId": { - "type": "string", - "format": "uuid", - "description": "Belonged delivery's " - }, - "body": { - "type": "object", - "properties": { - "company": { - "type": "string", - "nullable": true - }, - "name": { - "type": "string" - }, - "mobile": { - "type": "string" - } - }, - "required": [ - "company", - "name", - "mobile" - ] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "company": { - "type": "string", - "nullable": true - }, - "name": { - "type": "string" - }, - "mobile": { - "type": "string" - } - }, - "required": [ - "id", - "created_at", - "company", - "name", - "mobile" - ] - }, - "description": "Create a new shipper.\n\nCreate a new {@link IShoppingDeliveryShipper shipper} of the\n{@link IShoppingDelivery delivery}.\n\nThis action does not affect to the related {@link IShoppingOrder orders} or\n{@link IShoppingOrderGood goods} like {@link IShoppingDeliveryJourney }\nor {@link IShoppingDeliveryPiece } case, but just informs to the\n{@link IShoppingCustomer customer}." - }, - { - "method": "delete", - "path": "/shoppings/sellers/coupons/{id}", - "name": "shoppings_sellers_coupons_eraseById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Target coupon's " - } - } - } - ], - "description": "Erase a coupon.\n\nErase a {@link IShoppingCoupon coupon} with given ID.\n\nFor reference, if there're some {@link IShoppingCouponTicket tickets}\nwhich are already issued from the target coupon, they would not be affected.\nThose tickets are still valid until their expration time." - }, - { - "method": "put", - "path": "/shoppings/sellers/sales/{id}/open", - "name": "shoppings_sellers_sales_open_putById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "description": "Target sale's " - }, - "body": { - "type": "object", - "properties": { - "opened_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Opening time of the sale", - "description": "Opening time of the sale." - }, - "closed_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Closing time of the sale", - "description": "Closing time of the sale.\n\nIf this value is `null`, the sale be continued forever." - } - }, - "required": [ - "opened_at", - "closed_at" - ], - "description": "Update opening time information of sale." - } - } - } - ], - "description": "Change opening and closing time of a sale.\n\nUpdate a {@link IShoppingSale sale}'s opening and closing time.\n\nBy the way, if the sale still be opened or closed, it is not possible to\nchange the opening time. In contrary, if the sale already had been opened\nbut still not closed, it is possible to change the closing time.\n\nOf course, if closing time is less than opening time or not,\n428 unprocessable entity error would be thrown." - }, - { - "method": "post", - "path": "/shoppings/sellers/sales/{id}/replica", - "name": "shoppings_sellers_sales_replica_postById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "description": "Target sale's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "section_code": { - "type": "string", - "title": "Belonged section's {@link IShoppingSection.code }", - "description": "Belonged section's {@link IShoppingSection.code }." - }, - "status": { - "type": "string", - "enum": [ - "paused", - "suspended" - ], - "nullable": true, - "title": "Initial status of the sale", - "description": "Initial status of the sale.\n\n`null` or `undefined`: No restriction\n`paused`: Starts with {@link ITimestamps.paused_at paused} status\n`suspended`: Starts with {@link ITimestamps.suspended_at suspended} status" - }, - "opened_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Opening time of the sale", - "description": "Opening time of the sale." - }, - "closed_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Closing time of the sale", - "description": "Closing time of the sale.\n\nIf this value is `null`, the sale be continued forever." - }, - "content": { - "type": "object", - "properties": { - "title": { - "type": "string" - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string" - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - } - }, - "thumbnails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - } - } - }, - "required": [ - "title", - "format", - "body", - "files", - "thumbnails" - ] - }, - "channels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "code": { - "type": "string", - "title": "Target channel's {@link IShoppingChannel.code }", - "description": "Target channel's {@link IShoppingChannel.code }." - }, - "category_ids": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - }, - "title": "List of target categories' {@link IShoppingChannelCategory.id }s", - "description": "List of target categories' {@link IShoppingChannelCategory.id }s.\n\nIf empty, it means all categories of the channel is listing the sale." - } - }, - "required": [ - "code", - "category_ids" - ], - "description": "Creation information of the target channel (and categories) of sale to sell." - } - }, - "units": { - "type": "array", - "items": { - "type": "object", - "properties": { - "options": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "string", - "number", - "boolean" - ], - "title": "Type of descriptive option", - "description": "Type of descriptive option.\n\nWhich typed value should be written when purchasing." - }, - "name": { - "type": "string", - "title": "Readable name of the option", - "description": "Readable name of the option." - } - }, - "required": [ - "type", - "name" - ], - "description": "Creation information of the descriptive option." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "select" - ], - "title": "Discriminant for the type of selectable option", - "description": "Discriminant for the type of selectable option." - }, - "name": { - "type": "string", - "title": "Represents the name of the option", - "description": "Represents the name of the option." - }, - "variable": { - "type": "boolean", - "title": "Whether the option is variable or not", - "description": "Whether the option is variable or not.\n\nWhen type of current option is \"select\", this attribute means whether\nselecting different candidate value affects the final stock or not." - }, - "candidates": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Represents the name of the candidate value", - "description": "Represents the name of the candidate value." - } - }, - "required": [ - "name" - ], - "description": "Creation information of the candidate value." - }, - "minItems": 1, - "title": "List of candidate values", - "description": "List of candidate values." - } - }, - "required": [ - "type", - "name", - "variable", - "candidates" - ], - "description": "Creation information of the selectable option." - } - ] - }, - "title": "List of options", - "description": "List of options." - }, - "stocks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Representative name of the stock", - "description": "Representative name of the stock." - }, - "price": { - "type": "object", - "properties": { - "nominal": { - "type": "number", - "minimum": 0, - "title": "Nominal price", - "description": "Nominal price.\n\nThis is not {@link real real price} to pay, but just a nominal price to show.\nIf this value is greater than the {@link real real price}, it would be shown\nlike {@link IShoppingSeller seller} is giving a discount." - }, - "real": { - "type": "number", - "minimum": 0, - "title": "Real price to pay", - "description": "Real price to pay." - } - }, - "required": [ - "nominal", - "real" - ], - "description": "Shopping price interface." - }, - "quantity": { - "type": "integer", - "minimum": 1, - "title": "Initial inventory quantity", - "description": "Initial inventory quantity." - }, - "choices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "option_index": { - "type": "integer", - "description": "Target option's index number in\n{@link IShoppingSaleUnit.ICreate.options }." - }, - "candidate_index": { - "type": "integer", - "description": "Target candidate's index number in\n{@link IShoppingSaleUnitSelectableOption.ICreate.candidates }." - } - }, - "required": [ - "option_index", - "candidate_index" - ], - "description": "Creation information of stock choice." - }, - "title": "List of choices", - "description": "List of choices.\n\nWhich candidate values being chosen for each option." - } - }, - "required": [ - "name", - "price", - "quantity", - "choices" - ], - "description": "Creation information of the stock." - }, - "minItems": 1, - "title": "List of final stocks", - "description": "List of final stocks." - }, - "name": { - "type": "string", - "title": "Representative name of the unit", - "description": "Representative name of the unit." - }, - "primary": { - "type": "boolean", - "title": "Whether the unit is primary or not", - "description": "Whether the unit is primary or not.\n\nJust a labeling value." - }, - "required": { - "type": "boolean", - "title": "Whether the unit is required or not", - "description": "Whether the unit is required or not.\n\nWhen the unit is required, the customer must select the unit. If do not\nselect, customer can't buy it.\n\nFor example, if there's a sale \"Macbook Set\" and one of the unit is the\n\"Main Body\", is it possible to buy the \"Macbook Set\" without the\n\"Main Body\" unit? This property is for that case." - } - }, - "required": [ - "options", - "stocks", - "name", - "primary", - "required" - ], - "description": "Creation information of sale unit." - }, - "minItems": 1 - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "section_code", - "opened_at", - "closed_at", - "content", - "channels", - "units", - "tags" - ], - "description": "Creation information of sale." - }, - "description": "Get replica of a sale.\n\nGet a {@link IShoppingSale.ICreate } typed info of the target sale for\nreplication.\n\nIt would be useful for creating a new replication\n{@link IShoppingSale sale} with similar innformatiopn." - }, - { - "method": "delete", - "path": "/shoppings/sellers/sales/{id}/pause", - "name": "shoppings_sellers_sales_pause_eraseById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "description": "Target sale's " - } - } - } - ], - "description": "Pause a sale.\n\nPause a {@link IShoppingSale sale} from {@link open opened} state.\nTherefore, the sale can not be operated again until it be\n{@link restore restored}. By the way, {@link IShoppingCustomer customer}\nstill can sale from the {@link index } and {@link at } API endpints, but\n\"paused\" label would be attached.\n\nAlso, customer no more can put into the shopping cart, either.\nEven the sale already had been put into the shopping cart, the\n{@link IShoppingCartCommodity commodity} will not be listed on the\nshopping cart. Also, it is not possible to appling an\n{@link IShoppingOrder order} with the paused sale's commodity, either.\n\nBy the way, if the sale already had been applied to an order, the order\ncan be {@link IShoppingOrderPublish published} and\n{@link IShoppingSeller seller} must {@link IShoppingDelivery deliver} the\ngood to the customer." - }, - { - "method": "delete", - "path": "/shoppings/sellers/sales/{id}/suspend", - "name": "shoppings_sellers_sales_suspend_eraseById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "description": "Target sale's " - } - } - } - ], - "description": "Suspend a sale.\n\nSuspend a {@link IShoppingSale sale} from {@link open opened} state.\nTherefore, the sale can not be operated again until it be\n{@link restore restored} and {@link IShoppingCustomer customer} cannot\nsee the sale from the {@link index } and {@link at } API.\n\nAlso, customer no more can put into the shopping cart, either.\nEven the sale already had been put into the shopping cart, the\n{@link IShoppingCartCommodity commodity} will not be listed on the\nshopping cart. Also, it is not possible to appling an\n{@link IShoppingOrder order} with the suspended sale's commodity, either.\n\nBy the way, if the sale already had been applied to an order, the order\ncan be {@link IShoppingOrderPublish published} and\n{@link IShoppingSeller seller} must {@link IShoppingDelivery deliver} the\ngood to the customer." - }, - { - "method": "put", - "path": "/shoppings/sellers/sales/{id}/restore", - "name": "shoppings_sellers_sales_restore_putById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "description": "Target sale's " - } - } - } - ], - "description": "Restore a sale\n\nRestore a {@link IShoppingSale sale} from {@link pause paused} or\n{@link suspend suspended} state\n\nTherefore the sale can be operated again if its\n{@link IShoppingSale.closed_at closing time} has not been reached.\nAlso, if a {@link IShoppingCustomer customer} had put the sale into the\nshopping cart when being paused or suspended, the\n{@link IShoppingCartCommodity commodity} will be listed again on the\nshopping cart." - }, - { - "method": "post", - "path": "/shoppings/sellers/sales/{saleId}/questions/{questionId}/answer", - "name": "shoppings_sellers_sales_questions_answer_postBySaleidAndQuestionid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "questionId": { - "type": "string", - "format": "uuid", - "description": "Target question's " - }, - "body": { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "title", - "body", - "files" - ], - "description": "Creation information of the article." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "seller", - "id", - "snapshots", - "created_at" - ], - "description": "Answers to questions about sale snapshots.\n\n`IShoppingSaleInquiryAnswer` is an entity that embodies the official\nanswer written by the {@link IShoppingSeller seller} to the\n{@link IShoppingSaleInquiry inquiry} written by the\n{@link IShoppingCustomer customer}.\n\nOf course, in addition to writing an official response like this, it is\nalso possible for the seller to communicate with the inqjuiry written\ncustomer and multiple customers through\n{@link IShoppingSaleInquiryComment comments} in the attribution inquiry.\n\nFor refererence, it is not possible to write comments on this answer.\nEncourage people to write comments on the inquiry article. This is to\nprevent comments from being scattered in both inquiry and answer\narticles." - }, - "description": "Write an answer article.\n\nWrite a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry question article} written by a\n{@link IShoppingCustomer }.\n\nNote that, this is the formal answer that can be written only one per\na question article (but {@link update updatable}). Therefore, it needs to\nguide the {@link IShoppingSeller seller} to write it carefully.\n\nAlso, as seller can write {@link IShoppingSaleInquiryComment comments} to\nthe question article as many as he/she wants, it would be useful for\nadditional communication." - }, - { - "method": "put", - "path": "/shoppings/sellers/sales/{saleId}/questions/{questionId}/answer", - "name": "shoppings_sellers_sales_questions_answer_putBySaleidAndQuestionid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "questionId": { - "type": "string", - "format": "uuid", - "description": "Target question's " - }, - "body": { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "title", - "body", - "files" - ], - "description": "Creation information of the article." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ] - }, - "description": "Update an answer article.\n\nUpdate a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry question article} written by a\n{@link IShoppingCustomer }.\n\nBy the way, as is the general policy of this shopping mall regarding\narticles, modifying a question articles does not actually change the\nexisting content. Modified content is accumulated and recorded in the\nexisting article record as a new\n{@link IShoppingSaleInquiryAnswer.ISnapshot snapshot}. And this is made\npublic to everyone, including the {@link IShoppingCustomer customer} and the\n{@link IShoppingSeller seller}, and anyone who can view the article can\nalso view the entire editing histories.\n\nThis is to prevent customers or sellers from modifying their articles and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." - }, - { - "method": "post", - "path": "/shoppings/sellers/sales/{saleId}/questions/{inquiryId}/comments", - "name": "shoppings_sellers_sales_questions_comments_postBySaleidAndInquiryid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Target inquiry's " - }, - "body": { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales." - }, - { - "method": "patch", - "path": "/shoppings/sellers/sales/{saleId}/questions/{inquiryId}/comments", - "name": "shoppings_sellers_sales_questions_comments_patchBySaleidAndInquiryid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "body": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the comments with pagination and searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales." - }, - { - "method": "get", - "path": "/shoppings/sellers/sales/{saleId}/questions/{inquiryId}/comments/{id}", - "name": "shoppings_sellers_sales_questions_comments_getBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales." - }, - { - "method": "put", - "path": "/shoppings/sellers/sales/{saleId}/questions/{inquiryId}/comments/{id}", - "name": "shoppings_sellers_sales_questions_comments_putBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - }, - "body": { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot content of the comment." - }, - "description": "Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." - }, - { - "method": "patch", - "path": "/shoppings/sellers/sales/{saleId}/questions", - "name": "shoppings_sellers_sales_questions_patchBySaleid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "secret", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at" - ], - "description": "Summarized information of the question." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every summarized questions.\n\nList up every {@link IShoppingSaleQuestion.ISummary summarized questions} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned questions are summarized, not detailed. If you want\nto get the detailed information of a question, use {@link adridges } function\nor {@link at } function for each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.ISummary.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.ISummary.secret } with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." - }, - { - "method": "patch", - "path": "/shoppings/sellers/sales/{saleId}/questions/abridges", - "name": "shoppings_sellers_sales_questions_abridges_patchBySaleid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "secret", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "description": "Abridged information of the question." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every abridged questions.\n\nList up every {@link IShoppingSaleQuestion.IAbridge abridged questions} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned questions are abridged, not detailed. If you want\nto get the detailed information of a question, use {@link at } function\nfor each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.IAridge.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.IAridge.secret } with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/sellers/sales/{saleId}/questions/{id}", - "name": "shoppings_sellers_sales_questions_getBySaleidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target question's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "type": { - "type": "string", - "enum": [ - "question" - ], - "title": "Type of the derived inquiry", - "description": "Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion }\n- `review`: {@link IShoppingSaleReview }" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "seller", - "id", - "snapshots", - "created_at" - ], - "description": "Formal answer for the inquiry by the seller.", - "title": "Formal answer for the inquiry by the seller", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "secret", - "type", - "customer", - "answer", - "read_by_seller", - "id", - "snapshots", - "created_at" - ], - "description": "Question about sale snapshot.\n\n`IShoppingSaleQuestion` is a subtype entity of {@link IShoppingSaleInquiry },\nand is used when a {@link IShoppingCustomer customer} wants to ask something\nabout a {@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at\nthe time) registered by the {@link IShoppingSeller seller}.\n\nAnd, like most shopping malls, `IShoppingSaleQuestion` also provides\na {@link secret } attribute, allowing you to create a \"secret message\" that can\nonly be viewed by the seller and the customer who wrote the question." - }, - "description": "Get a question info.\n\nGet a detailed {@link IShoppingSaleQuestion question} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s question. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nquestions of the sales except the {@link IShoppingSaleQuestion.secret }\nvalue is `false`." - }, - { - "method": "post", - "path": "/shoppings/sellers/sales/{saleId}/reviews/{reviewId}/answer", - "name": "shoppings_sellers_sales_reviews_answer_postBySaleidAndReviewid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "reviewId": { - "type": "string", - "format": "uuid", - "description": "Target review's " - }, - "body": { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "title", - "body", - "files" - ], - "description": "Creation information of the article." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "seller", - "id", - "snapshots", - "created_at" - ], - "description": "Answers to questions about sale snapshots.\n\n`IShoppingSaleInquiryAnswer` is an entity that embodies the official\nanswer written by the {@link IShoppingSeller seller} to the\n{@link IShoppingSaleInquiry inquiry} written by the\n{@link IShoppingCustomer customer}.\n\nOf course, in addition to writing an official response like this, it is\nalso possible for the seller to communicate with the inqjuiry written\ncustomer and multiple customers through\n{@link IShoppingSaleInquiryComment comments} in the attribution inquiry.\n\nFor refererence, it is not possible to write comments on this answer.\nEncourage people to write comments on the inquiry article. This is to\nprevent comments from being scattered in both inquiry and answer\narticles." - }, - "description": "Write an answer article.\n\nWrite a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry review article} written by a\n{@link IShoppingCustomer }.\n\nNote that, this is the formal answer that can be written only one per\na review article (but {@link update updatable}). Therefore, it needs to\nguide the {@link IShoppingSeller seller} to write it carefully.\n\nAlso, as seller can write {@link IShoppingSaleInquiryComment comments} to\nthe review article as many as he/she wants, it would be useful for\nadditional communication." - }, - { - "method": "put", - "path": "/shoppings/sellers/sales/{saleId}/reviews/{reviewId}/answer", - "name": "shoppings_sellers_sales_reviews_answer_putBySaleidAndReviewid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "reviewId": { - "type": "string", - "format": "uuid", - "description": "Target review's " - }, - "body": { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "title", - "body", - "files" - ], - "description": "Creation information of the article." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ] - }, - "description": "Update an answer article.\n\nUpdate a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry review article} written by a\n{@link IShoppingCustomer }.\n\nBy the way, as is the general policy of this shopping mall regarding\narticles, modifying a review articles does not actually change the\nexisting content. Modified content is accumulated and recorded in the\nexisting article record as a new\n{@link IShoppingSaleInquiryAnswer.ISnapshot snapshot}. And this is made\npublic to everyone, including the {@link IShoppingCustomer customer} and the\n{@link IShoppingSeller seller}, and anyone who can view the article can\nalso view the entire editing histories.\n\nThis is to prevent customers or sellers from modifying their articles and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." - }, - { - "method": "post", - "path": "/shoppings/sellers/sales/{saleId}/reviews/{inquiryId}/comments", - "name": "shoppings_sellers_sales_reviews_comments_postBySaleidAndInquiryid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Target inquiry's " - }, - "body": { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales." - }, - { - "method": "patch", - "path": "/shoppings/sellers/sales/{saleId}/reviews/{inquiryId}/comments", - "name": "shoppings_sellers_sales_reviews_comments_patchBySaleidAndInquiryid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "body": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the comments with pagination and searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales." - }, - { - "method": "get", - "path": "/shoppings/sellers/sales/{saleId}/reviews/{inquiryId}/comments/{id}", - "name": "shoppings_sellers_sales_reviews_comments_getBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales." - }, - { - "method": "put", - "path": "/shoppings/sellers/sales/{saleId}/reviews/{inquiryId}/comments/{id}", - "name": "shoppings_sellers_sales_reviews_comments_putBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "inquiryId": { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - }, - "body": { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot content of the comment." - }, - "description": "Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." - }, - { - "method": "patch", - "path": "/shoppings/sellers/sales/{saleId}/reviews", - "name": "shoppings_sellers_sales_reviews_patchBySaleid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - }, - "minimum": { - "type": "number", - "minimum": 0, - "maximum": 100 - }, - "maximum": { - "type": "number", - "minimum": 0, - "maximum": 100 - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at", - "-score", - "+score" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "score": { - "type": "number", - "title": "Score of the review", - "description": "Score of the review." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "score", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at" - ], - "description": "Summarized information of the review." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every summarized reviews.\n\nList up every {@link IShoppingSaleReview.ISummary summarized reviews} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned reviews are summarized, not detailed. If you want\nto get the detailed information of a review, use {@link adridges } function\nor {@link at } function for each article.\n\nAlso, returned review has {@link IShoppingSaleReview.ISummary.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." - }, - { - "method": "patch", - "path": "/shoppings/sellers/sales/{saleId}/reviews/abridges", - "name": "shoppings_sellers_sales_reviews_abridges_patchBySaleid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - }, - "minimum": { - "type": "number", - "minimum": 0, - "maximum": 100 - }, - "maximum": { - "type": "number", - "minimum": 0, - "maximum": 100 - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at", - "-score", - "+score" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "score": { - "type": "number", - "minimum": 0, - "maximum": 100, - "title": "Score of the review", - "description": "Score of the review." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "score", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "description": "Abridged information of the review." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every abridged reviews.\n\nList up every {@link IShoppingSaleReview.IAbridge abridged reviews} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned reviews are abridged, not detailed. If you want\nto get the detailed information of a review, use {@link at } function\nfor each article.\n\nAlso, returned review has {@link IShoppingSaleReview.IAridge.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/sellers/sales/{saleId}/reviews/{id}", - "name": "shoppings_sellers_sales_reviews_getBySaleidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target review's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "review" - ], - "title": "Type of the derived inquiry", - "description": "Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion }\n- `review`: {@link IShoppingSaleReview }" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "seller", - "id", - "snapshots", - "created_at" - ], - "description": "Formal answer for the inquiry by the seller.", - "title": "Formal answer for the inquiry by the seller", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "score": { - "type": "number", - "minimum": 0, - "maximum": 100, - "title": "Score of the review", - "description": "Score of the review." - }, - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "score", - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot content of the review article." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "type", - "customer", - "answer", - "read_by_seller", - "id", - "snapshots", - "created_at" - ], - "description": "Reviews for sale snapshots.\n\n`IShoppingSaleReview` is a subtype entity of {@link IShoppingSaleInquiry },\nand is used when a {@link IShoppingCustomer customer} purchases a\n{@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at the time)\nregistered by the {@link IShoppingSeller seller} as a product and leaves a\nreview and rating for it.\n\nFor reference, `IShoppingSaleReview` and\n{@link IShoppingOrderGod shopping_order_goods} have a logarithmic relationship\nof N: 1, but this does not mean that customers can continue to write reviews\nfor the same product indefinitely. Wouldn't there be restrictions, such as\nif you write a review once, you can write an additional review a month later?" - }, - "description": "Get a review info.\n\nGet a detailed {@link IShoppingSaleReview review} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s review. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nreviews of the sales." - }, - { - "method": "post", - "path": "/shoppings/sellers/sales/{saleId}/snapshots/{id}/replica", - "name": "shoppings_sellers_sales_snapshots_replica_postBySaleidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target snapshot's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "section_code": { - "type": "string", - "title": "Belonged section's {@link IShoppingSection.code }", - "description": "Belonged section's {@link IShoppingSection.code }." - }, - "status": { - "type": "string", - "enum": [ - "paused", - "suspended" - ], - "nullable": true, - "title": "Initial status of the sale", - "description": "Initial status of the sale.\n\n`null` or `undefined`: No restriction\n`paused`: Starts with {@link ITimestamps.paused_at paused} status\n`suspended`: Starts with {@link ITimestamps.suspended_at suspended} status" - }, - "opened_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Opening time of the sale", - "description": "Opening time of the sale." - }, - "closed_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Closing time of the sale", - "description": "Closing time of the sale.\n\nIf this value is `null`, the sale be continued forever." - }, - "content": { - "type": "object", - "properties": { - "title": { - "type": "string" - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string" - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - } - }, - "thumbnails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - } - } - }, - "required": [ - "title", - "format", - "body", - "files", - "thumbnails" - ] - }, - "channels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "code": { - "type": "string", - "title": "Target channel's {@link IShoppingChannel.code }", - "description": "Target channel's {@link IShoppingChannel.code }." - }, - "category_ids": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - }, - "title": "List of target categories' {@link IShoppingChannelCategory.id }s", - "description": "List of target categories' {@link IShoppingChannelCategory.id }s.\n\nIf empty, it means all categories of the channel is listing the sale." - } - }, - "required": [ - "code", - "category_ids" - ], - "description": "Creation information of the target channel (and categories) of sale to sell." - } - }, - "units": { - "type": "array", - "items": { - "type": "object", - "properties": { - "options": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "string", - "number", - "boolean" - ], - "title": "Type of descriptive option", - "description": "Type of descriptive option.\n\nWhich typed value should be written when purchasing." - }, - "name": { - "type": "string", - "title": "Readable name of the option", - "description": "Readable name of the option." - } - }, - "required": [ - "type", - "name" - ], - "description": "Creation information of the descriptive option." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "select" - ], - "title": "Discriminant for the type of selectable option", - "description": "Discriminant for the type of selectable option." - }, - "name": { - "type": "string", - "title": "Represents the name of the option", - "description": "Represents the name of the option." - }, - "variable": { - "type": "boolean", - "title": "Whether the option is variable or not", - "description": "Whether the option is variable or not.\n\nWhen type of current option is \"select\", this attribute means whether\nselecting different candidate value affects the final stock or not." - }, - "candidates": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Represents the name of the candidate value", - "description": "Represents the name of the candidate value." - } - }, - "required": [ - "name" - ], - "description": "Creation information of the candidate value." - }, - "minItems": 1, - "title": "List of candidate values", - "description": "List of candidate values." - } - }, - "required": [ - "type", - "name", - "variable", - "candidates" - ], - "description": "Creation information of the selectable option." - } - ] - }, - "title": "List of options", - "description": "List of options." - }, - "stocks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Representative name of the stock", - "description": "Representative name of the stock." - }, - "price": { - "type": "object", - "properties": { - "nominal": { - "type": "number", - "minimum": 0, - "title": "Nominal price", - "description": "Nominal price.\n\nThis is not {@link real real price} to pay, but just a nominal price to show.\nIf this value is greater than the {@link real real price}, it would be shown\nlike {@link IShoppingSeller seller} is giving a discount." - }, - "real": { - "type": "number", - "minimum": 0, - "title": "Real price to pay", - "description": "Real price to pay." - } - }, - "required": [ - "nominal", - "real" - ], - "description": "Shopping price interface." - }, - "quantity": { - "type": "integer", - "minimum": 1, - "title": "Initial inventory quantity", - "description": "Initial inventory quantity." - }, - "choices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "option_index": { - "type": "integer", - "description": "Target option's index number in\n{@link IShoppingSaleUnit.ICreate.options }." - }, - "candidate_index": { - "type": "integer", - "description": "Target candidate's index number in\n{@link IShoppingSaleUnitSelectableOption.ICreate.candidates }." - } - }, - "required": [ - "option_index", - "candidate_index" - ], - "description": "Creation information of stock choice." - }, - "title": "List of choices", - "description": "List of choices.\n\nWhich candidate values being chosen for each option." - } - }, - "required": [ - "name", - "price", - "quantity", - "choices" - ], - "description": "Creation information of the stock." - }, - "minItems": 1, - "title": "List of final stocks", - "description": "List of final stocks." - }, - "name": { - "type": "string", - "title": "Representative name of the unit", - "description": "Representative name of the unit." - }, - "primary": { - "type": "boolean", - "title": "Whether the unit is primary or not", - "description": "Whether the unit is primary or not.\n\nJust a labeling value." - }, - "required": { - "type": "boolean", - "title": "Whether the unit is required or not", - "description": "Whether the unit is required or not.\n\nWhen the unit is required, the customer must select the unit. If do not\nselect, customer can't buy it.\n\nFor example, if there's a sale \"Macbook Set\" and one of the unit is the\n\"Main Body\", is it possible to buy the \"Macbook Set\" without the\n\"Main Body\" unit? This property is for that case." - } - }, - "required": [ - "options", - "stocks", - "name", - "primary", - "required" - ], - "description": "Creation information of sale unit." - }, - "minItems": 1 - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "section_code", - "opened_at", - "closed_at", - "content", - "channels", - "units", - "tags" - ], - "description": "Creation information of sale." - }, - "description": "Get replica of a snapshot.\n\nGet a {@link IShoppingSale.ICreate } typed info of the target\n{@link IShoppingSaleSnapshot snapshot} record for replication.\n\nIt would be useful for creating a new replication {@link IShoppingSale sale}\nfrom the old snapshot." - }, - { - "method": "post", - "path": "/shoppings/sellers/sales/{saleId}/units/{unitId}/stocks/{stockId}/supplements", - "name": "shoppings_sellers_sales_units_stocks_supplements_postBySaleidAndUnitidAndStockid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "unitId": { - "type": "string", - "format": "uuid", - "description": "Belonged unit's " - }, - "stockId": { - "type": "string", - "format": "uuid", - "description": "Target stock's " - }, - "body": { - "type": "object", - "properties": { - "value": { - "type": "integer", - "title": "Supplemented quantity", - "description": "Supplemented quantity." - } - }, - "required": [ - "value" - ], - "description": "Creation information of the supplement." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "integer", - "title": "Supplemented quantity", - "description": "Supplemented quantity." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the record", - "description": "Creation time of the record.\n\nAnother words, the time when inventory of the stock being supplemented." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Supplementation of inventory quantity of stock.\n\nYou know what? If a {@link IShoppingSaleUnitStock stock} has been sold over\nits {@link IShoppingSaleUnitStock.ICreate.quantity initial inventory quantity},\nthe stock can't be sold anymore, because of out of stock. In that case, how the\n{@link IShoppingSeller } should do?\n\nWhen the sotck is sold out, seller can supplement the inventory record by\nregistering this `IShoppingSaleUnitStockSupplement` record. Right, this\n`IShoppingSaleUnitStockSupplement` is an entity that embodies the\nsupplementation of the inventory quantity of the belonged stock." - }, - "description": "Create a supplement.\n\nCreate a {@link IShoppingSaleUnitStockSupplement supplement history} of a\nspecific {@link IShoppingSaleUnitStock stock}.\n\nTherefore, {@link IShoppingSaleUnitStockInventory.income inventory} of the\ntarget stock will be increased by the\n{@link IShoppingSaleUnitStockSupplement.value supplement's value}." - }, - { - "method": "patch", - "path": "/shoppings/sellers/sales/{saleId}/units/{unitId}/stocks/{stockId}/supplements", - "name": "shoppings_sellers_sales_units_stocks_supplements_patchBySaleidAndUnitidAndStockid", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "unitId": { - "type": "string", - "format": "uuid", - "description": "Belonged unit's " - }, - "stockId": { - "type": "string", - "format": "uuid", - "description": "Target stock's " - }, - "body": { - "type": "object", - "properties": { - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at" - ] - }, - "title": "Sortable columns", - "description": "Sortable columns." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request information of the stock supplement list." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "integer", - "title": "Supplemented quantity", - "description": "Supplemented quantity." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the record", - "description": "Creation time of the record.\n\nAnother words, the time when inventory of the stock being supplemented." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Supplementation of inventory quantity of stock.\n\nYou know what? If a {@link IShoppingSaleUnitStock stock} has been sold over\nits {@link IShoppingSaleUnitStock.ICreate.quantity initial inventory quantity},\nthe stock can't be sold anymore, because of out of stock. In that case, how the\n{@link IShoppingSeller } should do?\n\nWhen the sotck is sold out, seller can supplement the inventory record by\nregistering this `IShoppingSaleUnitStockSupplement` record. Right, this\n`IShoppingSaleUnitStockSupplement` is an entity that embodies the\nsupplementation of the inventory quantity of the belonged stock." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every supplements.\n\nList up every {@link IShoppingSaleUnitStockSupplement supplement histories}\nof a specific {@link IShoppingSaleUnitStock stock}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleUnitStockSupplement.IRequest.search search condition} in\nthe request body. Also, it is possible to customize sequence order of\nrecords by configuring {@link IShoppingSaleUnitStockSupplement.IRequest.sort }\nproperty." - }, - { - "method": "put", - "path": "/shoppings/sellers/sales/{saleId}/units/{unitId}/stocks/{stockId}/supplements/{id}", - "name": "shoppings_sellers_sales_units_stocks_supplements_putBySaleidAndUnitidAndStockidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "unitId": { - "type": "string", - "format": "uuid", - "description": "Belonged unit's " - }, - "stockId": { - "type": "string", - "format": "uuid", - "description": "Target stock's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target supplement's " - }, - "body": { - "type": "object", - "properties": { - "value": { - "type": "integer", - "title": "Supplemented quantity", - "description": "Supplemented quantity." - } - }, - "required": [ - "value" - ], - "description": "Creation information of the supplement." - } - } - } - ], - "description": "Update a supplement.\n\nUpdate quantity value of a {@link IShoppingSaleUnitStockSupplement supplement}\nof a specific {@link IShoppingSaleUnitStock stock}.\n\nTherefore, {@link IShoppingSaleUnitStockInventory.income inventory} of the\ntarget stock will be changed by the\n{@link IShoppingSaleUnitStockSupplement.value supplement's value}." - }, - { - "method": "delete", - "path": "/shoppings/sellers/sales/{saleId}/units/{unitId}/stocks/{stockId}/supplements/{id}", - "name": "shoppings_sellers_sales_units_stocks_supplements_eraseBySaleidAndUnitidAndStockidAndId", - "parameters": [ - { - "type": "object", - "properties": { - "saleId": { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - "unitId": { - "type": "string", - "format": "uuid", - "description": "Belonged unit's " - }, - "stockId": { - "type": "string", - "format": "uuid", - "description": "Target stock's " - }, - "id": { - "type": "string", - "format": "uuid", - "description": "Target supplement's " - } - } - } - ], - "description": "Erase a supplement.\n\nErase a {@link IShoppingSaleUnitStockSupplement supplement} of a specific\n{@link IShoppingSaleUnitStock stock}.\n\nTherefore, {@link IShoppingSaleUnitStockInventory.income inventory} of the\ntarget stock will be decreased by the\n{@link IShoppingSaleUnitStockSupplement.value supplement's value}." - }, - { - "method": "patch", - "path": "/shoppings/sellers/systematic/channels", - "name": "shoppings_sellers_systematic_channels_patch", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-channel.code", - "-channel.name", - "-channel.created_at", - "+channel.code", - "+channel.name", - "+channel.created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the channels with pagination and searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every channels.\n\nList up every {@link IShoppingChannel channels} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingChannel.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingChannel.IRequest.sort sort condition}." - }, - { - "method": "patch", - "path": "/shoppings/sellers/systematic/sections", - "name": "shoppings_sellers_systematic_sections_patch", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-section.code", - "-section.name", - "-section.created_at", - "+section.code", - "+section.name", - "+section.created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the sections with pagination and searching/sorting options." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "code", - "name", - "created_at" - ], - "description": "Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every sections.\n\nList up every {@link IShoppingSection sections} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSection.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingSection.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/sellers/systematic/sections/{id}", - "name": "shoppings_sellers_systematic_sections_getById", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "description": "Target section's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "code", - "name", - "created_at" - ], - "description": "Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future." - }, - "description": "Get a section info.\n\nGet a detailed {@link IShoppingSection section} information." - }, - { - "method": "get", - "path": "/shoppings/sellers/systematic/sections/{code}/get", - "name": "shoppings_sellers_systematic_sections_get_getByCode", - "parameters": [ - { - "type": "object", - "properties": { - "code": { - "type": "string", - "description": "Target section's " - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "code", - "name", - "created_at" - ], - "description": "Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future." - }, - "description": "Get a section info by its code.\n\nGet a detailed {@link IShoppingSection section} information by its code." - } - ], - "errors": [ - { - "method": "post", - "path": "/shoppings/admins/coupons", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/admins/coupons", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/admins/coupons/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/admins/orders", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/admins/orders/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/admins/sales", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/admins/sales/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/admins/sales/{saleId}/snapshots", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/admins/sales/{saleId}/snapshots/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/admins/sales/{saleId}/snapshots/{id}/flip", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "post", - "path": "/shoppings/admins/systematic/channels/{channelCode}/categories", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/admins/systematic/channels/{channelCode}/categories", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/admins/systematic/channels/{channelCode}/categories/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/admins/systematic/channels/{channelCode}/categories/{id}/invert", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/admins/systematic/channels/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/admins/systematic/channels/hierarchical", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/admins/systematic/channels/{code}/get", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/customers/coupons", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/coupons/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "post", - "path": "/shoppings/customers/coupons/tickets", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/customers/coupons/tickets", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/coupons/tickets/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "post", - "path": "/shoppings/customers/carts/{cartId}/commodities", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/customers/carts/{cartId}/commodities", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/carts/{cartId}/commodities/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/customers/carts/{cartId}/commodities/discountable", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "post", - "path": "/shoppings/customers/orders", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/customers/orders", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/orders/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/orders/{id}/price", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/customers/orders/{id}/discountable", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "put", - "path": "/shoppings/customers/orders/{id}/discount", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/customers/sales", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/sales/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/customers/sales/{saleId}/snapshots", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/sales/{saleId}/snapshots/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/sales/{saleId}/snapshots/{id}/flip", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/customers/systematic/channels/{channelCode}/categories", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/systematic/channels/{channelCode}/categories/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/systematic/channels/{channelCode}/categories/{id}/invert", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/customers/systematic/channels/hierarchical", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/systematic/channels/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/systematic/channels/{code}/get", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/sellers/deliveries", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/sellers/deliveries/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "post", - "path": "/shoppings/sellers/coupons", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/sellers/coupons", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/sellers/coupons/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/sellers/orders", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/sellers/orders/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "post", - "path": "/shoppings/sellers/sales", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/sellers/sales", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/sellers/sales/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "put", - "path": "/shoppings/sellers/sales/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/sellers/sales/{saleId}/snapshots", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/sellers/sales/{saleId}/snapshots/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/sellers/sales/{saleId}/snapshots/{id}/flip", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/sellers/systematic/channels/{channelCode}/categories", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/sellers/systematic/channels/{channelCode}/categories/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/sellers/systematic/channels/{channelCode}/categories/{id}/invert", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/sellers/systematic/channels/hierarchical", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/sellers/systematic/channels/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/sellers/systematic/channels/{code}/get", - "messages": [ - "Failed to escape $ref" - ] - } - ], - "options": { - "keyword": true, - "separate": null - } -} \ No newline at end of file +{"openapi":"3.0.3","functions":[{"method":"get","path":"/monitors/health","name":"monitors_health_get","parameters":[{"type":"object","properties":{}}],"description":"Health check API."},{"method":"get","path":"/monitors/performance","name":"monitors_performance_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"object","properties":{"cpu":{"type":"object","properties":{"user":{"type":"number"},"system":{"type":"number"}},"required":["user","system"]},"memory":{"type":"object","properties":{"rss":{"type":"number","description":"Resident Set Size, is the amount of space occupied in the main memory device (that is a subset of the total allocated memory) for the\nprocess, including all C++ and JavaScript objects and code."},"heapTotal":{"type":"number","title":"Refers to V8's memory usage","description":"Refers to V8's memory usage."},"heapUsed":{"type":"number","title":"Refers to V8's memory usage","description":"Refers to V8's memory usage."},"external":{"type":"number"},"arrayBuffers":{"type":"number","description":"Refers to memory allocated for `ArrayBuffer`s and `SharedArrayBuffer`s, including all Node.js Buffers. This is also included\nin the external value. When Node.js is used as an embedded library, this value may be `0` because allocations for `ArrayBuffer`s\nmay not be tracked in that case."}},"required":["rss","heapTotal","heapUsed","external","arrayBuffers"]},"resource":{"type":"object","properties":{"fsRead":{"type":"number"},"fsWrite":{"type":"number"},"involuntaryContextSwitches":{"type":"number"},"ipcReceived":{"type":"number"},"ipcSent":{"type":"number"},"majorPageFault":{"type":"number"},"maxRSS":{"type":"number"},"minorPageFault":{"type":"number"},"sharedMemorySize":{"type":"number"},"signalsCount":{"type":"number"},"swappedOut":{"type":"number"},"systemCPUTime":{"type":"number"},"unsharedDataSize":{"type":"number"},"unsharedStackSize":{"type":"number"},"userCPUTime":{"type":"number"},"voluntaryContextSwitches":{"type":"number"}},"required":["fsRead","fsWrite","involuntaryContextSwitches","ipcReceived","ipcSent","majorPageFault","maxRSS","minorPageFault","sharedMemorySize","signalsCount","swappedOut","systemCPUTime","unsharedDataSize","unsharedStackSize","userCPUTime","voluntaryContextSwitches"]}},"required":["cpu","memory","resource"]},"description":"Get performance information.\n\nGet perofmration information composed with CPU, memory and resource usage."},{"method":"get","path":"/monitors/system","name":"monitors_system_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"object","properties":{"uid":{"type":"number","title":"Random Unique ID","description":"Random Unique ID."},"arguments":{"type":"array","items":{"type":"string"},"description":"`process.argv`"},"commit":{"type":"object","properties":{"shortHash":{"type":"string"},"branch":{"type":"string"},"hash":{"type":"string"},"subject":{"type":"string"},"sanitizedSubject":{"type":"string"},"body":{"type":"string"},"author":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"}},"required":["name","email"],"description":"Git user account info."},"committer":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"}},"required":["name","email"],"description":"Git user account info."},"authored_at":{"type":"string"},"commited_at":{"type":"string"},"notes":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}}},"required":["shortHash","branch","hash","subject","sanitizedSubject","body","author","committer","authored_at","commited_at","tags"],"description":"Git commit info."},"package":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"description":{"type":"string"},"main":{"type":"string"},"typings":{"type":"string"},"scripts":{"type":"object","properties":{},"description":"Construct a type with a set of properties K of type T","additionalProperties":{"type":"string"}},"repository":{"type":"object","properties":{"type":{"type":"string","enum":["git"]},"url":{"type":"string"}},"required":["type","url"]},"author":{"type":"string"},"license":{"type":"string"},"bugs":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]},"homepage":{"type":"string"},"devDependencies":{"type":"object","properties":{},"description":"Construct a type with a set of properties K of type T","additionalProperties":{"type":"string"}},"dependencies":{"type":"object","properties":{},"description":"Construct a type with a set of properties K of type T","additionalProperties":{"type":"string"}},"publishConfig":{"type":"object","properties":{"registry":{"type":"string"}},"required":["registry"]},"files":{"type":"array","items":{"type":"string"}}},"required":["name","version","description","scripts","repository","author","license","bugs","homepage","dependencies"],"description":"NPM package info."},"created_at":{"type":"string","title":"Creation time of this server","description":"Creation time of this server."}},"required":["uid","arguments","commit","package","created_at"],"description":"System Information."},"description":"Get system information.\n\nGet system information with commit and package information.\n\nAs such information is a type of sensitive, response be encrypted."},{"method":"get","path":"/shoppings/admins/authenticate","name":"shoppings_admins_authenticate_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},"description":"Get administrator information.\n\nGet {@link IShoppingAdministrator.IInvert administrator} information of\ncurrent {@link IShoppingCustomer customer}.\n\nIf current {@link IShoppingMember member} is not an administrator,\nit throws 403 forbidden exception."},{"method":"post","path":"/shoppings/admins/authenticate","name":"shoppings_admins_authenticate_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{},"description":"Joining request info."}}}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},"description":"Join as an administrator.\n\nJoin as an administrator with {@link IShoppingAdministrator.IJoin joining info}.\n\nThis method is allowed only when the {@link IShoppingCustomer customer} already\nhas joined the {@link IShoppingMember membership}. IF not, he (she) must\naccomplish it before. If not, 403 forbidden exception would be thrown."},{"method":"put","path":"/shoppings/admins/authenticate/login","name":"shoppings_admins_authenticate_login_put","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"email":{"type":"string","format":"email","title":"Email address of member","description":"Email address of member.\n\nIf the member has multiple email addresses, just use one of them."},"password":{"type":"string","title":"Password of the member account","description":"Password of the member account."}},"required":["email","password"],"description":"Login request info."}}}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},"description":"Login as an administrator.\n\nLogin as an administrator with {@link IShoppingAdministrator.ILogin login info}.\n\nThis method has exactly same effect with\n{@link ShoppingApi.functional.customers.authenticate.login} function, but\nreturned type is a llttle different. The similar function returns\n{@link IShoppingCustomer} type that starting from the customer information, so\nthat you have to access to the administrator info through\n`customer.member.administrator`. In contrast with that, this method returns\n{@link IShoppingAdministrator.IInvert} type that starting from the administrator\ninfo, so that can access to the customer info through `administrator.customer`.\n\nOf course, to use this function, you had to {@link join} as an administrator\nbefore. If not, 403 forbidden exception would be thrown,"},{"method":"delete","path":"/shoppings/admins/coupons/{id}","name":"shoppings_admins_coupons_eraseById","parameters":[{"type":"object","properties":{"id":{"type":"string","description":" Target coupon's {@link IShoppingCoupon.id}"}}}],"description":"Erase a coupon.\n\nErase a {@link IShoppingCoupon coupon} with given ID.\n\nFor reference, if there're some {@link IShoppingCouponTicket tickets}\nwhich are already issued from the target coupon, they would not be affected.\nThose tickets are still valid until their expration time."},{"method":"post","path":"/shoppings/admins/deposits","name":"shoppings_admins_deposits_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[-1,1]}},"required":["code","source","direction"]}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","created_at","code","source","direction"]},"description":"Create a new deposit metadata.\n\nCreate a new {@link IShoppingDeposit deposit} metadata.\n\nThis action means that adding a new origin reason of deposit's income/outcome.\nOf course, creating a new deposit record does not mean that automatically\nincrease or decrease the {@link IShoppingCustomer customer}'s balance\nfollowing the record's reason why. The logic must be developed manually\nin the backend side."},{"method":"patch","path":"/shoppings/admins/deposits","name":"shoppings_admins_deposits_patch","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"search":{"type":"object","properties":{"source":{"type":"string"},"code":{"type":"string"},"direction":{"type":"number","enum":[-1,1]}}},"sort":{"type":"array","items":{"type":"string","enum":["-deposit.source","-deposit.code","-deposit.direction","+deposit.source","+deposit.code","+deposit.direction"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}}}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","created_at","code","source","direction"]},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"Get deposit metadata list.\n\nList up every {@link IShoppingDeposit deposit} metadata informations\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingDeposit.IRequest.search search condition} in the request body.\nAlso, it is possible to customize sequence order of records by configuring\n{@link IShoppingDeposit.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/admins/deposits/{id}","name":"shoppings_admins_deposits_getById","parameters":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":" Target deposit's {@link IShoppingDeposit.id}"}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","created_at","code","source","direction"]},"description":"Get a deposit metadata.\n\nGet a {@link IShoppingDeposit deposit} metadata information with its ID."},{"method":"delete","path":"/shoppings/admins/deposits/{id}","name":"shoppings_admins_deposits_eraseById","parameters":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":" Target deposit's {@link IShoppingDeposit.id}"}}}],"description":"Erase a deposit metadata.\n\nErase a {@link IShoppingDeposit deposit} metadata, so that no more\n{@link IShoppingCustomer customer}'s balance does not be increased or\ndecreased by the deposit's reason why."},{"method":"get","path":"/shoppings/admins/deposits/{code}/get","name":"shoppings_admins_deposits_get_getByCode","parameters":[{"type":"object","properties":{"code":{"type":"string"}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","created_at","code","source","direction"]},"description":"Get a deposit metadata by its code.\n\nGet a {@link IShoppingDeposit deposit} metadata information with its code."},{"method":"post","path":"/shoppings/admins/mileages","name":"shoppings_admins_mileages_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[-1,1]},"value":{"type":"number","nullable":true}},"required":["code","source","direction","value"]}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"value":{"type":"number","nullable":true},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","value","created_at","code","source","direction"]},"description":"Create a new mileage metadata.\n\nCreate a new {@link IShoppingMileage mileage} metadata.\n\nThis action means that adding a new origin reason of mileage's income/outcome.\nOf course, creating a new mileage record does not mean that automatically\nincrease or decrease the {@link IShoppingCustomer customer}'s balance\nfollowing the record's reason why. The logic must be developed manually\nin the backend side."},{"method":"patch","path":"/shoppings/admins/mileages","name":"shoppings_admins_mileages_patch","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"search":{"type":"object","properties":{"source":{"type":"string"},"code":{"type":"string"},"direction":{"type":"number","enum":[-1,1]}}},"sort":{"type":"array","items":{"type":"string","enum":["-mileage.source","-mileage.code","-mileage.direction","+mileage.source","+mileage.code","+mileage.direction"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}}}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"value":{"type":"number","nullable":true},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","value","created_at","code","source","direction"]},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"Get mileage metadata list.\n\nList up every {@link IShoppingMileage mileage} metadata informations\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingMileage.IRequest.search search condition} in the request body.\nAlso, it is possible to customize sequence order of records by configuring\n{@link IShoppingMileage.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/admins/mileages/{id}","name":"shoppings_admins_mileages_getById","parameters":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":" Target mileage's {@link IShoppingMileage.id}"}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"value":{"type":"number","nullable":true},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","value","created_at","code","source","direction"]},"description":"Get a mileage metadata.\n\nGet a {@link IShoppingMileage mileage} metadata information with its ID."},{"method":"delete","path":"/shoppings/admins/mileages/{id}","name":"shoppings_admins_mileages_eraseById","parameters":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":" Target mileage's {@link IShoppingMileage.id}"}}}],"description":"Erase a mileage metadata.\n\nErase a {@link IShoppingMileage mileage} metadata, so that no more\n{@link IShoppingCustomer customer}'s balance does not be increased or\ndecreased by the mileage's reason why."},{"method":"get","path":"/shoppings/admins/mileages/{code}/get","name":"shoppings_admins_mileages_get_getByCode","parameters":[{"type":"object","properties":{"code":{"type":"string"}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"value":{"type":"number","nullable":true},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","value","created_at","code","source","direction"]},"description":"Get a mileage metadata by its code.\n\nGet a {@link IShoppingMileage mileage} metadata information with its code."},{"method":"post","path":"/shoppings/admins/mileages/donations","name":"shoppings_admins_mileages_donations_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"citizen_id":{"type":"string","format":"uuid"},"value":{"type":"number"},"reason":{"type":"string"}},"required":["citizen_id","value","reason"]}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"administrator":{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"value":{"type":"number"},"reason":{"type":"string"},"created_at":{"type":"string","format":"date-time"}},"required":["id","administrator","citizen","value","reason","created_at"]},"description":"Donate a mileage to a citizen.\n\nDonate a mileage to a specific {@link IShoppingCitizen citizen} from\ncurrent {@link IShoppingAdministrator administrator}, with detailed\nreason why.\n\nNote that, as donating mileage affects to the citizen's balance and\ncurrent shopping mall's operating profit, administrator must archive\nthe detailed reason why the mileage is donated."},{"method":"patch","path":"/shoppings/admins/mileages/donations","name":"shoppings_admins_mileages_donations_patch","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"search":{"type":"object","properties":{"citizen":{"type":"object","properties":{"mobile":{"type":"string","pattern":"^[0-9]*$"},"name":{"type":"string"}}},"minimum":{"type":"number","minimum":0},"maximum":{"type":"number","minimum":0},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"sort":{"type":"array","items":{"type":"string","enum":["-donation.created_at","-donation.value","-donation.reason","+donation.created_at","+donation.value","+donation.reason"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}}}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"administrator":{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"value":{"type":"number"},"reason":{"type":"string"},"created_at":{"type":"string","format":"date-time"}},"required":["id","administrator","citizen","value","reason","created_at"]},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every mileage donation histories.\n\nList up every {@link IShoppingMileageDonation mileage donation histories}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingMileageDonation.IRequest.search search condition} in\nthe request body. Also, it is possible to customize sequence order of\nrecords by configuring {@link IShoppingMileageDonation.IRequest.sort sort}."},{"method":"get","path":"/shoppings/admins/mileages/donations/{id}","name":"shoppings_admins_mileages_donations_getById","parameters":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":" Target history's {@link IShoppingMileageDonation.id}"}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"administrator":{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"value":{"type":"number"},"reason":{"type":"string"},"created_at":{"type":"string","format":"date-time"}},"required":["id","administrator","citizen","value","reason","created_at"]},"description":"Get a mileage donation history.\n\nGet a {@link IShoppingMileageDonation mileage donation history} with its ID."},{"method":"post","path":"/shoppings/admins/sales/{saleId}/questions/{inquiryId}/comments","name":"shoppings_admins_sales_questions_comments_postBySaleidAndInquiryid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Target inquiry's {@link IShoppingSaleInquiry.id }"},"body":{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}}}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales."},{"method":"patch","path":"/shoppings/admins/sales/{saleId}/questions/{inquiryId}/comments","name":"shoppings_admins_sales_questions_comments_patchBySaleidAndInquiryid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},"body":{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"body":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the comments with pagination and searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales."},{"method":"get","path":"/shoppings/admins/sales/{saleId}/questions/{inquiryId}/comments/{id}","name":"shoppings_admins_sales_questions_comments_getBySaleidAndInquiryidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},"id":{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"}}}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales."},{"method":"put","path":"/shoppings/admins/sales/{saleId}/questions/{inquiryId}/comments/{id}","name":"shoppings_admins_sales_questions_comments_putBySaleidAndInquiryidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},"id":{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"},"body":{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot content of the comment."},"description":"Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence."},{"method":"patch","path":"/shoppings/admins/sales/{saleId}/questions","name":"shoppings_admins_sales_questions_patchBySaleid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"body":{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["seller","id","title","created_at","updated_at"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["secret","customer","answer","read_by_seller","id","title","created_at","updated_at"],"description":"Summarized information of the question."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every summarized questions.\n\nList up every {@link IShoppingSaleQuestion.ISummary summarized questions} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned questions are summarized, not detailed. If you want\nto get the detailed information of a question, use {@link adridges} function\nor {@link at} function for each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.ISummary.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.ISummary.secret} with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}."},{"method":"patch","path":"/shoppings/admins/sales/{saleId}/questions/abridges","name":"shoppings_admins_sales_questions_abridges_patchBySaleid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"body":{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["seller","id","title","created_at","updated_at","format","body","files"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["secret","customer","answer","read_by_seller","id","title","created_at","updated_at","format","body","files"],"description":"Abridged information of the question."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every abridged questions.\n\nList up every {@link IShoppingSaleQuestion.IAbridge abridged questions} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned questions are abridged, not detailed. If you want\nto get the detailed information of a question, use {@link at} function\nfor each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.IAridge.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.IAridge.secret} with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/admins/sales/{saleId}/questions/{id}","name":"shoppings_admins_sales_questions_getBySaleidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"id":{"type":"string","format":"uuid","description":" Target question's {@link IShoppingSaleQuestion.id}"}}}],"output":{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"type":{"type":"string","enum":["question"],"title":"Type of the derived inquiry","description":"Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion}\n- `review`: {@link IShoppingSaleReview}"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["seller","id","snapshots","created_at"],"description":"Formal answer for the inquiry by the seller.","nullable":true,"title":"Formal answer for the inquiry by the seller"},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["secret","type","customer","answer","read_by_seller","id","snapshots","created_at"],"description":"Question about sale snapshot.\n\n`IShoppingSaleQuestion` is a subtype entity of {@link IShoppingSaleInquiry},\nand is used when a {@link IShoppingCustomer customer} wants to ask something\nabout a {@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at\nthe time) registered by the {@link IShoppingSeller seller}.\n\nAnd, like most shopping malls, `IShoppingSaleQuestion` also provides\na {@link secret} attribute, allowing you to create a \"secret message\" that can\nonly be viewed by the seller and the customer who wrote the question."},"description":"Get a question info.\n\nGet a detailed {@link IShoppingSaleQuestion question} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s question. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nquestions of the sales except the {@link IShoppingSaleQuestion.secret}\nvalue is `false`."},{"method":"post","path":"/shoppings/admins/sales/{saleId}/reviews/{inquiryId}/comments","name":"shoppings_admins_sales_reviews_comments_postBySaleidAndInquiryid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Target inquiry's {@link IShoppingSaleInquiry.id }"},"body":{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}}}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales."},{"method":"patch","path":"/shoppings/admins/sales/{saleId}/reviews/{inquiryId}/comments","name":"shoppings_admins_sales_reviews_comments_patchBySaleidAndInquiryid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},"body":{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"body":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the comments with pagination and searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales."},{"method":"get","path":"/shoppings/admins/sales/{saleId}/reviews/{inquiryId}/comments/{id}","name":"shoppings_admins_sales_reviews_comments_getBySaleidAndInquiryidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},"id":{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"}}}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales."},{"method":"put","path":"/shoppings/admins/sales/{saleId}/reviews/{inquiryId}/comments/{id}","name":"shoppings_admins_sales_reviews_comments_putBySaleidAndInquiryidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},"id":{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"},"body":{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot content of the comment."},"description":"Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence."},{"method":"patch","path":"/shoppings/admins/sales/{saleId}/reviews","name":"shoppings_admins_sales_reviews_patchBySaleid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"body":{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"minimum":{"type":"number","minimum":0,"maximum":100},"maximum":{"type":"number","minimum":0,"maximum":100}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at","-score","+score"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number","title":"Score of the review","description":"Score of the review."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["seller","id","title","created_at","updated_at"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["score","customer","answer","read_by_seller","id","title","created_at","updated_at"],"description":"Summarized information of the review."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every summarized reviews.\n\nList up every {@link IShoppingSaleReview.ISummary summarized reviews} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned reviews are summarized, not detailed. If you want\nto get the detailed information of a review, use {@link adridges} function\nor {@link at} function for each article.\n\nAlso, returned review has {@link IShoppingSaleReview.ISummary.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}."},{"method":"patch","path":"/shoppings/admins/sales/{saleId}/reviews/abridges","name":"shoppings_admins_sales_reviews_abridges_patchBySaleid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"body":{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"minimum":{"type":"number","minimum":0,"maximum":100},"maximum":{"type":"number","minimum":0,"maximum":100}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at","-score","+score"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"title":"Score of the review","description":"Score of the review."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["seller","id","title","created_at","updated_at","format","body","files"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["score","customer","answer","read_by_seller","id","title","created_at","updated_at","format","body","files"],"description":"Abridged information of the review."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every abridged reviews.\n\nList up every {@link IShoppingSaleReview.IAbridge abridged reviews} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned reviews are abridged, not detailed. If you want\nto get the detailed information of a review, use {@link at} function\nfor each article.\n\nAlso, returned review has {@link IShoppingSaleReview.IAridge.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/admins/sales/{saleId}/reviews/{id}","name":"shoppings_admins_sales_reviews_getBySaleidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"id":{"type":"string","format":"uuid","description":" Target review's {@link IShoppingSaleReview.id}"}}}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["review"],"title":"Type of the derived inquiry","description":"Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion}\n- `review`: {@link IShoppingSaleReview}"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["seller","id","snapshots","created_at"],"description":"Formal answer for the inquiry by the seller.","nullable":true,"title":"Formal answer for the inquiry by the seller"},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"title":"Score of the review","description":"Score of the review."},"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["score","id","created_at","format","title","body","files"],"description":"Snapshot content of the review article."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["type","customer","answer","read_by_seller","id","snapshots","created_at"],"description":"Reviews for sale snapshots.\n\n`IShoppingSaleReview` is a subtype entity of {@link IShoppingSaleInquiry},\nand is used when a {@link IShoppingCustomer customer} purchases a\n{@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at the time)\nregistered by the {@link IShoppingSeller seller} as a product and leaves a\nreview and rating for it.\n\nFor reference, `IShoppingSaleReview` and\n{@link IShoppingOrderGod shopping_order_goods} have a logarithmic relationship\nof N: 1, but this does not mean that customers can continue to write reviews\nfor the same product indefinitely. Wouldn't there be restrictions, such as\nif you write a review once, you can write an additional review a month later?"},"description":"Get a review info.\n\nGet a detailed {@link IShoppingSaleReview review} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s review. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nreviews of the sales."},{"method":"put","path":"/shoppings/admins/systematic/channels/{channelCode}/categories/{id}","name":"shoppings_admins_systematic_channels_categories_putByChannelcodeAndId","parameters":[{"type":"object","properties":{"channelCode":{"type":"string","description":" Belonged channel's {@link IShoppingChannel.code }"},"id":{"type":"string","description":" Target category's {@link IShoppingChannelCategory.id}"},"body":{"type":"object","properties":{"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent category's ID","description":"Parent category's ID."},"name":{"type":"string","title":"Representative name of the category","description":"Representative name of the category.\n\nThe name must be unique within the parent category. If no parent exists,\nthen the name must be unique within the channel between no parent\ncategories."}},"required":["parent_id","name"],"description":"Creation information of the category."}}}],"description":"Update a category.\n\nUpdate a {@link IShoppingChannelCategory category}'s name. If required,\nit is possible to change the parent category by its ID. Of course, detaching\nfrom the parent category so that becoming the root category is also possible."},{"method":"delete","path":"/shoppings/admins/systematic/channels/{channelCode}/categories/merge","name":"shoppings_admins_systematic_channels_categories_merge_eraseByChannelcode","parameters":[{"type":"object","properties":{"channelCode":{"type":"string","description":" Belonged channel's {@link IShoppingChannel.code }"},"body":{"type":"object","properties":{"keep":{"type":"string","format":"uuid","title":"Target record to keep after merging","description":"Target record to keep after merging.\n\nAfter merge process, {@link absorbed} records would be merged into\nthis {@link keep} record."},"absorbed":{"type":"array","items":{"type":"string","format":"uuid"},"title":"To be absorbed to {@link keep} after merging","description":"To be absorbed to {@link keep} after merging."}},"required":["keep","absorbed"],"description":"Record Merge DTO.\n\n`IRecordMerge` is a structure for merging records.\n\nThe `merge` means that merging multiple {@link IRecordMerge.absorbed}\nrecords into {@link IRecordMerge.keep} instead of deleting\n{@link IRecordMerge.absorbed} records.\n\nIf there're some dependent tables of the target `table` having\nunique constraint on foriegn key column, such dependent tables\nalso perform the merge process, too.\n\nOf course, if there're another dependent tables under those\ndependents, they also perform the merge process recursively as well.\nSuch recursive merge process still works for self-recursive\n(tree-structured) tables."}}}],"description":"Merge multiple categories into one.\n\nIn this shopping mall system, it is not possible to delete a\n{@link IShoppingChannelCategory category}, because it is a systematic\nentity affecting to all other core entities like\n{@link IShoppingSale sales}. Instead of deleting, you can merge multiple\ncategories into one.\n\nIf you specify a category to absorb others, then all of other categories\nwill be merged into the specified one. Also, subsidiary entities of\ncategories also be merged and their references also be merged cascadingly."},{"method":"post","path":"/shoppings/admins/systematic/channels","name":"shoppings_admins_systematic_channels_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["code","name"],"description":"Creation information of the channel."}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"description":"Create a new channel.\n\nCreate a new {@link IShoppingChannel channel} with given code and name.\n\nAs channel means an individual market,\n{@link IShoppingAdministrator administrator} should perform this action\nonly when a new application being registered."},{"method":"patch","path":"/shoppings/admins/systematic/channels","name":"shoppings_admins_systematic_channels_patch","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"search":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-channel.code","-channel.name","-channel.created_at","+channel.code","+channel.name","+channel.created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the channels with pagination and searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every channels.\n\nList up every {@link IShoppingChannel channels} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingChannel.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingChannel.IRequest.sort sort condition}."},{"method":"put","path":"/shoppings/admins/systematic/channels/{id}","name":"shoppings_admins_systematic_channels_putById","parameters":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":" Target channel's {@link IShoppingChannel.code}"},"body":{"type":"object","properties":{"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["name"],"description":"Updating information of the channel."}}}],"description":"Update a channel.\n\nUpdate a {@link IShoppingChannel channel}'s name.\n\nNote that, it is not possible to change the channel's code. If you want to\nto do it forcibly, then {@link create} new one and {@link merge} with it."},{"method":"delete","path":"/shoppings/admins/systematic/channels/merge","name":"shoppings_admins_systematic_channels_merge_erase","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"keep":{"type":"string","format":"uuid","title":"Target record to keep after merging","description":"Target record to keep after merging.\n\nAfter merge process, {@link absorbed} records would be merged into\nthis {@link keep} record."},"absorbed":{"type":"array","items":{"type":"string","format":"uuid"},"title":"To be absorbed to {@link keep} after merging","description":"To be absorbed to {@link keep} after merging."}},"required":["keep","absorbed"],"description":"Record Merge DTO.\n\n`IRecordMerge` is a structure for merging records.\n\nThe `merge` means that merging multiple {@link IRecordMerge.absorbed}\nrecords into {@link IRecordMerge.keep} instead of deleting\n{@link IRecordMerge.absorbed} records.\n\nIf there're some dependent tables of the target `table` having\nunique constraint on foriegn key column, such dependent tables\nalso perform the merge process, too.\n\nOf course, if there're another dependent tables under those\ndependents, they also perform the merge process recursively as well.\nSuch recursive merge process still works for self-recursive\n(tree-structured) tables."}}}],"description":"Merge multiple channels into one.\n\nIn this shopping mall system, it is not possible to delete a\n{@link IShoppingChannel channel}, because it is a systematic entity\naffecting to all other core entities like customers, members and\nsales. Instead of deleting, you can merge multiple channels into one.\n\nIf you specify a channel to absorb others, then all of other channels\nwill be merged into the specified one. Also, subsidiary entities of\nchannels also be merged and their references also be merged cascadingly."},{"method":"post","path":"/shoppings/admins/systematic/sections","name":"shoppings_admins_systematic_sections_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."}},"required":["code","name"],"description":"Creation information of the section."}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","code","name","created_at"],"description":"Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future."},"description":"Create a new section.\n\nCreate a new {@link IShoppingSection section} with given code and name.\n\nAs section means a spatial unit of a market that handling different type\nof products with other section, {@link IShoppingAdministrator administrator}\nshould perform this action only when a new section being required."},{"method":"patch","path":"/shoppings/admins/systematic/sections","name":"shoppings_admins_systematic_sections_patch","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"search":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-section.code","-section.name","-section.created_at","+section.code","+section.name","+section.created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the sections with pagination and searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","code","name","created_at"],"description":"Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every sections.\n\nList up every {@link IShoppingSection sections} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSection.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingSection.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/admins/systematic/sections/{id}","name":"shoppings_admins_systematic_sections_getById","parameters":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":" Target section's {@link IShoppingSection.id}"}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","code","name","created_at"],"description":"Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future."},"description":"Get a section info.\n\nGet a detailed {@link IShoppingSection section} information."},{"method":"put","path":"/shoppings/admins/systematic/sections/{id}","name":"shoppings_admins_systematic_sections_putById","parameters":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":" Target section's {@link IShoppingSection.code}"},"body":{"type":"object","properties":{"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."}},"required":["name"],"description":"Updating information of the section."}}}],"description":"Update a section.\n\nUpdate a {@link IShoppingSection section}'s name.\n\nNote that, it is not possible to change the section's code. If you want to\nto do it forcibly, then {@link create} new one and {@link merge} with it."},{"method":"delete","path":"/shoppings/admins/systematic/sections/merge","name":"shoppings_admins_systematic_sections_merge_erase","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"keep":{"type":"string","format":"uuid","title":"Target record to keep after merging","description":"Target record to keep after merging.\n\nAfter merge process, {@link absorbed} records would be merged into\nthis {@link keep} record."},"absorbed":{"type":"array","items":{"type":"string","format":"uuid"},"title":"To be absorbed to {@link keep} after merging","description":"To be absorbed to {@link keep} after merging."}},"required":["keep","absorbed"],"description":"Record Merge DTO.\n\n`IRecordMerge` is a structure for merging records.\n\nThe `merge` means that merging multiple {@link IRecordMerge.absorbed}\nrecords into {@link IRecordMerge.keep} instead of deleting\n{@link IRecordMerge.absorbed} records.\n\nIf there're some dependent tables of the target `table` having\nunique constraint on foriegn key column, such dependent tables\nalso perform the merge process, too.\n\nOf course, if there're another dependent tables under those\ndependents, they also perform the merge process recursively as well.\nSuch recursive merge process still works for self-recursive\n(tree-structured) tables."}}}],"description":"Merge multiple sections into one.\n\nIn this shopping mall system, it is not possible to delete a\n{@link IShoppingSection section}, because it is a systematic entity\naffecting to all other core entities like {@link IShoppingSale sales}.\nInstead of deleting, you can merge multiple sections into one.\n\nIf you specify a section to absorb others, then all of other sections\nwill be merged into the specified one. Also, subsidiary entities of\nsections also be merged and their references also be merged cascadingly."},{"method":"get","path":"/shoppings/admins/systematic/sections/{code}/get","name":"shoppings_admins_systematic_sections_get_getByCode","parameters":[{"type":"object","properties":{"code":{"type":"string","description":" Target section's {@link IShoppingSection.code}"}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","code","name","created_at"],"description":"Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future."},"description":"Get a section info by its code.\n\nGet a detailed {@link IShoppingSection section} information by its code."},{"method":"patch","path":"/shoppings/customers/authenticate/refresh","name":"shoppings_customers_authenticate_refresh_patch","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"value":{"type":"string"}},"required":["value"]}}}],"output":{"type":"object","properties":{"setHeaders":{"type":"object","properties":{"Authorization":{"type":"string"}},"required":["Authorization"]},"token":{"type":"object","properties":{"access":{"type":"string"},"refresh":{"type":"string"},"expired_at":{"type":"string","format":"date-time"},"refreshable_until":{"type":"string","format":"date-time"}},"required":["access","refresh","expired_at","refreshable_until"]},"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["setHeaders","token","type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"]},"description":"Refresh the authentication token.\n\nCreate a new {@link IShoppingCustomer.IToken.access access token} of a\n{@link IShoppingCustomer customer} with the pre-issued\n{@link IShoppingCustomer.IToken.refresh refresh} token.\n\nNote that, this function is available until the\n{@link IShoppingCustomer.IToken.refreshable_until} value."},{"method":"get","path":"/shoppings/customers/authenticate","name":"shoppings_customers_authenticate_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"description":"Get current customer info.\n\nGet current {@link IShoppingCustomer customer} information from the\n{@link IShoppingCustomer.IToken.access access token}."},{"method":"post","path":"/shoppings/customers/authenticate","name":"shoppings_customers_authenticate_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"channel_code":{"type":"string"},"external_user":{"type":"object","properties":{"citizen":{"type":"object","properties":{"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"password":{"type":"string","title":"Password of external user from the external system","description":"Password of external user from the external system.\n\nThis is a password issued to the user by an external service,\nand is by no means the actual user password. However, for\n{@link IShoppingCustomer customers} who entered the same\napplication and code as the current external system user, this is\nto determine whether to view this as a correct external system\nuser or a violation."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["citizen","application","uid","nickname","password","data"],"nullable":true},"href":{"type":"string","format":"uri"},"referrer":{"type":"string","format":"uri","nullable":true},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}]}},"required":["channel_code","external_user","href","referrer"]}}}],"output":{"type":"object","properties":{"setHeaders":{"type":"object","properties":{"Authorization":{"type":"string"}},"required":["Authorization"]},"token":{"type":"object","properties":{"access":{"type":"string"},"refresh":{"type":"string"},"expired_at":{"type":"string","format":"date-time"},"refreshable_until":{"type":"string","format":"date-time"}},"required":["access","refresh","expired_at","refreshable_until"]},"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["setHeaders","token","type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"]},"description":"Create a new customer record.\n\nThis shopping mall system defines everyone participating in this market as\na \"customer\". And the customer records are not archived based on individual\n{@link IShoppingCitizen people}, but based on the unit of connection.\nTherefore, even if it is the same person, a new {@link IShoppingCustomer}\nrecord is created every time a connection is made.\n\nTherefore, all Client Applications that access this service must first call\nthis function, report the customer's inflow path to the server, and create\nan {@link IShoppingCustomer.IToken.access access token}. If you skip this\nfunction call, all the other API functions would be prohibited. There is no\nexception, even if you want to {@link activate} your citizenship or\n{@link login} with your {@link IShoppingMember member account}. Before\nauthenticating yourself or logging in, be sure to call this function first.\nThis also applies when an {@link IShoppingAdministrator administrator} or\n{@link IShoppingSeller seller} logs in.\n\nAlso, the authentication token has an\n{@link IShoppingCustomer.IToken.expired_at expiration time}\nand cannot be used permanently. For reference, the authentication token is\nvalid for 3 hours, and if you want to maintain customer authentication even\nafter 3 hours, you must call the {@link refresh} function."},{"method":"post","path":"/shoppings/customers/authenticate/join","name":"shoppings_customers_authenticate_join_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"citizen":{"type":"object","properties":{"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["mobile","name"],"description":"Citizen information.","nullable":true,"title":"Citizen information"},"email":{"type":"string","format":"email","title":"Email address of member","description":"Email address of member.\n\nIf the member has multiple email addresses, just use one of them."},"password":{"type":"string","title":"Password of the member account","description":"Password of the member account."}},"required":["nickname","citizen","email","password"],"description":"Joining request info."}}}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"description":"Join membership.\n\n{@link IShoppingCustomer Customer} signs up for\n{@link IShoppingMember membership} of current shopping mall system.\n\nIf you've performed the {@link IShoppingCitizen citizenship}\n{@link activate activation} too, then you can skip the {@link activate}\nfunction calling everytime you log in from now on. Also, if the person had\n{@link IShoppingOrder purchased} with {@link activate} and {@link external}\nfunction calling, you can also access to the order history too. In other\nwords, activity details prior to membership registration can also be\naccessed with continuity.\n\nFor reference, as described in the {@link create} function, before calling\nthis `join` function, you must first create a customer record and token by\ncalling the {@link create} function."},{"method":"put","path":"/shoppings/customers/authenticate/login","name":"shoppings_customers_authenticate_login_put","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"email":{"type":"string","format":"email","title":"Email address of member","description":"Email address of member.\n\nIf the member has multiple email addresses, just use one of them."},"password":{"type":"string","title":"Password of the member account","description":"Password of the member account."}},"required":["email","password"],"description":"Login request info."}}}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"description":"Membership login.\n\n{@link IShoppingCustomer Customer} logs in with his/her\n{@link IShoppingMember membership} account with the email and password.\n\nIf the {@link IShoppingMember member} has previously performed\n{@link activate citizenship activation}, the {@link IShoppingCustomer.citizen}\nvalue would be filled in accordingly. And if the member has also signed up\nas an {@link IShoppingAdministrator administrator} or\n{@link IShoppingSeller seller}, the relevant information is also entered\naccordingly.\n\nFor reference, as described in the {@link create} function, before calling\nthis `login` function, you must first create a customer record and token by\ncalling the {@link create} function."},{"method":"post","path":"/shoppings/customers/authenticate/activate","name":"shoppings_customers_authenticate_activate_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["mobile","name"],"description":"Creation information of citizen verification."}}}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"description":"Activate citizenship.\n\n{@link IShoppingCustomer Customer} activates his/her\n{@link IShoppingCitizen citizenship} with mobile number and real name.\n\nIf the custommer already {@link join joined} to the\n{@link IShoppingMember membership}, then you can skip the citizenship\n{@link activation} function calling everytime you log in from now on.\nOf course, such story would be same to the {@link external} function, too.\n\nFor reference, as described in the {@link create} function, before calling\nthis `activate` function, you must first create a customer record and token\nby calling the {@link create} function."},{"method":"post","path":"/shoppings/customers/authenticate/external","name":"shoppings_customers_authenticate_external_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"citizen":{"type":"object","properties":{"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"password":{"type":"string","title":"Password of external user from the external system","description":"Password of external user from the external system.\n\nThis is a password issued to the user by an external service,\nand is by no means the actual user password. However, for\n{@link IShoppingCustomer customers} who entered the same\napplication and code as the current external system user, this is\nto determine whether to view this as a correct external system\nuser or a violation."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["citizen","application","uid","nickname","password","data"],"description":"Creation information of external user."}}}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"description":"Enroll external user info.\n\n{@link IShoppingCustomer Customer} enrolls his/her\n{@link IShoppingExternalUser external user} information from other service.\n\nIt has similar effect with the {@link join membership joining} function,\nso that if you've performed the {@link IShoppingCitizen citizenship}\n{@link activate activation} too, then you can skip the {@link activate}\nfunction calling everytime you call this `external` function with same\ninfo from now on. Also, if the person had\n{@link IShoppingOrder purchased} with {@link activate} and {@link join}\nfunction calling, you can also access to the order history too. In other\nwords, activity details prior to external server registration can also be\naccessed with continuity.\n\nFor reference, as described in the {@link create} function, before calling\nthis `external` function, you must first create a customer record and token\nby calling the {@link create} function."},{"method":"put","path":"/shoppings/customers/authenticate/password/change","name":"shoppings_customers_authenticate_password_change_put","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"oldbie":{"type":"string","title":"Current password","description":"Current password."},"newbie":{"type":"string","title":"The new password to change","description":"The new password to change."}},"required":["oldbie","newbie"],"description":"Request info of password change."}}}],"description":"Change password.\n\nChange password of {@link IShoppingMember member} with the current password.\n\nThe reason why the current password is required is for security."},{"method":"post","path":"/shoppings/customers/deposits/charges","name":"shoppings_customers_deposits_charges_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"value":{"type":"number"}},"required":["value"]}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"publish":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"paid_at":{"type":"string","format":"date-time","nullable":true},"cancelled_at":{"type":"string","format":"date-time","nullable":true}},"required":["id","created_at","paid_at","cancelled_at"],"nullable":true},"created_at":{"type":"string","format":"date-time"},"value":{"type":"number"}},"required":["id","customer","publish","created_at","value"]},"description":"Create a new deposit charge application.\n\nCreate a new {@link IShoppingDepositCharge deposit charge application}.\n\nBy the way, this function does not mean completion the deposit charge, but\nmeans just {@link IShoppingCustomer customer} is appling the deposit charge.\nThe deposit charge be completed only when customer\n{@link IShoppingDepositChargePublish.publish pay} the deposit charge."},{"method":"patch","path":"/shoppings/customers/deposits/charges","name":"shoppings_customers_deposits_charges_patch","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"search":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"minimum":{"type":"number"},"maximum":{"type":"number"},"state":{"type":"string","enum":["pending","published","payed","cancelled"]},"publish":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"payment":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}}}}},"required":["state"]},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-value","-publish.created_at","-publish.paid_at","+value","+publish.created_at","+publish.paid_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}}}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"publish":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"paid_at":{"type":"string","format":"date-time","nullable":true},"cancelled_at":{"type":"string","format":"date-time","nullable":true}},"required":["id","created_at","paid_at","cancelled_at"],"nullable":true},"created_at":{"type":"string","format":"date-time"},"value":{"type":"number"}},"required":["id","customer","publish","created_at","value"]},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every deposit charges.\n\nList up every {@link IShoppingDepositCharge deposit charges} of the\n{@link IShoppingCustomer customer} with {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingDepositCharge.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingDepositCharge.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/customers/deposits/charges/{id}","name":"shoppings_customers_deposits_charges_getById","parameters":[{"type":"object","properties":{"id":{"type":"string","description":" Target deposit charge's {@link IShoppingDepositCharge.id}"}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"publish":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"paid_at":{"type":"string","format":"date-time","nullable":true},"cancelled_at":{"type":"string","format":"date-time","nullable":true}},"required":["id","created_at","paid_at","cancelled_at"],"nullable":true},"created_at":{"type":"string","format":"date-time"},"value":{"type":"number"}},"required":["id","customer","publish","created_at","value"]},"description":"Get a deposit charge info.\n\nGet a {@link IShoppingDepositCharge deposit charge} information."},{"method":"put","path":"/shoppings/customers/deposits/charges/{id}","name":"shoppings_customers_deposits_charges_putById","parameters":[{"type":"object","properties":{"id":{"type":"string","description":" Target deposit charge's {@link IShoppingDepositCharge.id}"},"body":{"type":"object","properties":{"value":{"type":"number"}},"required":["value"]}}}],"description":"Update a deposit charge application.\n\nUpdate value of a {@link IShoppingDepositCharge deposit charge application}\nthat has been applied by the {@link IShoppingCustomer}.\n\nIf the charge has been {@link IShoppingDepositChargePublish published},\nthen it is not possible to update the deposit charge. Only 410 gone exception\nwould be thrown."},{"method":"delete","path":"/shoppings/customers/deposits/charges/{id}","name":"shoppings_customers_deposits_charges_eraseById","parameters":[{"type":"object","properties":{"id":{"type":"string","description":" Target deposit charge's {@link IShoppingDepositCharge.id}"}}}],"description":"Erase a deposit charge application.\n\nErase a {@link IShoppingDepositCharge deposit charge application} that has been\napplied by the {@link IShoppingCustomer}.\n\nIf the charge has been {@link IShoppingDepositChargePublish published}, then\nit is not possible to erase the deposit charge. In that case, you've to cancel\nthe payment by calling the {@link publish.cancel} function."},{"method":"get","path":"/shoppings/customers/deposits/charges/{chargeId}/publish/able","name":"shoppings_customers_deposits_charges_publish_able_getByChargeid","parameters":[{"type":"object","properties":{"chargeId":{"type":"string","format":"uuid","description":" Target charge's {@link IShoppingDepositCharge.id }"}}}],"output":{"type":"boolean"},"description":"Check publishable.\n\nTest whether the {@link IShoppingDepositCharge charge} is publishable or not.\n\nIf the charge has not been {@link IShoppingDepositChargePublish published} and\nnot deleted yet, then it is possible to publish the charge"},{"method":"post","path":"/shoppings/customers/deposits/charges/{chargeId}/publish","name":"shoppings_customers_deposits_charges_publish_postByChargeid","parameters":[{"type":"object","properties":{"chargeId":{"type":"string","format":"uuid","description":" Target charge's {@link IShoppingDepositCharge.id }"},"body":{"type":"object","properties":{"vendor":{"type":"string"},"uid":{"type":"string"}},"required":["vendor","uid"]}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"paid_at":{"type":"string","format":"date-time","nullable":true},"cancelled_at":{"type":"string","format":"date-time","nullable":true}},"required":["id","created_at","paid_at","cancelled_at"]},"description":"Publish a charge.\n\n{@link IShoppingDepositChargePublish Publish} a\n{@link IShoppingDepositCharge charge} that has been applied by the\n{@link IShoppingCustomer} with payment information gotten from the\npayment vendor system.\n\nAlso, the payment time can be different with the publish time. For example,\nif the payment method is manual bank account transfer, then the payment\nwould be delayed until the customer actually transfer the money. In that\ncase, {@link IShoppingDepositChargePublish.paid_at} would be `null` value,\nso that you have to check it after calling this publish function."},{"method":"patch","path":"/shoppings/customers/deposits/histories","name":"shoppings_customers_deposits_histories_patch","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"search":{"type":"object","properties":{"deposit":{"type":"object","properties":{"source":{"type":"string"},"code":{"type":"string"},"direction":{"type":"number","enum":[-1,1]}}},"citizen_id":{"type":"string","format":"uuid"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"minimum":{"type":"number","minimum":0},"maximum":{"type":"number","minimum":0}}},"sort":{"type":"array","items":{"type":"string","enum":["-deposit.source","-deposit.code","-deposit.direction","+deposit.source","+deposit.code","+deposit.direction","-history.value","-history.created_at","+history.value","+history.created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}}}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"deposit":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","created_at","code","source","direction"]},"source_id":{"type":"string","format":"uuid"},"value":{"type":"number"},"balance":{"type":"number"},"created_at":{"type":"string","format":"date-time"}},"required":["id","citizen","deposit","source_id","value","balance","created_at"]},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every deposit histories.\n\nList up every {@link IShoppingDepositHistory deposit histories} of the\n{@link IShoppingCustomer customer} with {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingDepositHistory.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingDepositHistory.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/customers/deposits/histories/{id}","name":"shoppings_customers_deposits_histories_getById","parameters":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"deposit":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","created_at","code","source","direction"]},"source_id":{"type":"string","format":"uuid"},"value":{"type":"number"},"balance":{"type":"number"},"created_at":{"type":"string","format":"date-time"}},"required":["id","citizen","deposit","source_id","value","balance","created_at"]},"description":"Get a deposit history info.\n\nGet a {@link IShoppingDepositHistory deposit history} information."},{"method":"get","path":"/shoppings/customers/deposits/histories/balance","name":"shoppings_customers_deposits_histories_balance_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"number"},"description":"Get balance of the deposit.\n\nGet current balance of the deposit of the {@link IShoppingCustomer customer}."},{"method":"patch","path":"/shoppings/customers/mileages/histories","name":"shoppings_customers_mileages_histories_patch","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"search":{"type":"object","properties":{"mileage":{"type":"object","properties":{"source":{"type":"string"},"code":{"type":"string"},"direction":{"type":"number","enum":[-1,1]}}},"citizen_id":{"type":"string","format":"uuid"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"minimum":{"type":"number","minimum":0},"maximum":{"type":"number","minimum":0}}},"sort":{"type":"array","items":{"type":"string","enum":["-mileage.source","-mileage.code","-mileage.direction","+mileage.source","+mileage.code","+mileage.direction","-history.value","-history.created_at","+history.value","+history.created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}}}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"mileage":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"value":{"type":"number","nullable":true},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","value","created_at","code","source","direction"]},"source_id":{"type":"string","format":"uuid"},"value":{"type":"number"},"balance":{"type":"number"},"created_at":{"type":"string","format":"date-time"}},"required":["id","citizen","mileage","source_id","value","balance","created_at"]},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every mileage histories.\n\nList up every {@link IShoppingMileageHistory mileage histories} of the\n{@link IShoppingCustomer customer} with {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingMileageHistory.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingMileageHistory.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/customers/mileages/histories/{id}","name":"shoppings_customers_mileages_histories_getById","parameters":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":" Target mileage history's {@link IShoppingMileageHistory.id}"}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"mileage":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"value":{"type":"number","nullable":true},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","value","created_at","code","source","direction"]},"source_id":{"type":"string","format":"uuid"},"value":{"type":"number"},"balance":{"type":"number"},"created_at":{"type":"string","format":"date-time"}},"required":["id","citizen","mileage","source_id","value","balance","created_at"]},"description":"Get a mileage history info.\n\nGet a {@link IShoppingMileageHistory mileage history} information."},{"method":"get","path":"/shoppings/customers/mileages/histories/balance","name":"shoppings_customers_mileages_histories_balance_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"number"},"description":"Get balance of the mileage.\n\nGet current balance of the mileage of the {@link IShoppingCustomer customer}."},{"method":"put","path":"/shoppings/customers/carts/{cartId}/commodities/{id}","name":"shoppings_customers_carts_commodities_putByCartidAndId","parameters":[{"type":"object","properties":{"cartId":{"type":"string","format":"uuid","nullable":true,"description":" Belonged cart's ID"},"id":{"type":"string","format":"uuid","description":" Target commodity's {@link IShoppingCartCommodity.id}"},"body":{"type":"object","properties":{"volume":{"type":"integer","minimum":1,"title":"Volume of the commodity to purchase","description":"Volume of the commodity to purchase.\n\nA value indicating how many sets would be multiplied to the children\n{@link IShoppingSaleUnitStock.IInvert.quantity} values."}},"required":["volume"],"description":"Update information of a shopping cart commodity."}}}],"description":"Update a commodity (volume).\n\nUpdate a {@link IShoppingCartCommodity commodity}'s volume in the\nshopping cart.\n\nIf the *cartId* is different with the belonged cart's ID, then 404 not\nfound exception would be thrown. Otherwise, the *cartId* has `null` value,\nsuch dependency checking would be skipped, but still ownership would be\nvalidated.\n\nAlso, if target {@link IShoppingSale sale} has been suspended or\n{@link IShoppingSaleUnitStockInventory out of stock} suddenly, then 410\ngone error would be thrown, either."},{"method":"delete","path":"/shoppings/customers/carts/{cartId}/commodities/{id}","name":"shoppings_customers_carts_commodities_eraseByCartidAndId","parameters":[{"type":"object","properties":{"cartId":{"type":"string","format":"uuid","nullable":true,"description":" Belonged cart's ID"},"id":{"type":"string","format":"uuid","description":" Target commodity's {@link IShoppingCartCommodity.id}"}}}],"description":"Erase a commodity.\n\nErase a {@link IShoppingCartCommodity commodity} from the shopping cart.\n\nIf the commodity is on an {@link IShoppingOrder order} process, it is not\npossible to erase it. Instead, if the order has been\n{@link IShoppingOrderPublish published}, then it would not be appread in\nthe shopping cart more. If the order be erased, then you also can continue\nerasinng the commodity, neither."},{"method":"get","path":"/shoppings/customers/carts/{cartId}/commodities/{id}/replica","name":"shoppings_customers_carts_commodities_replica_getByCartidAndId","parameters":[{"type":"object","properties":{"cartId":{"type":"string","format":"uuid","nullable":true,"description":" Belonged cart's ID"},"id":{"type":"string","format":"uuid","description":" Target commodity's {@link IShoppingCartCommodity.id}"}}}],"output":{"type":"object","properties":{"sale_id":{"type":"string","format":"uuid","title":"Target sale's {@link IShoppingSale.id}","description":"Target sale's {@link IShoppingSale.id}."},"stocks":{"type":"array","items":{"type":"object","properties":{"unit_id":{"type":"string","format":"uuid","title":"Target unit's {@link IShoppingSaleUnit.id}","description":"Target unit's {@link IShoppingSaleUnit.id}."},"stock_id":{"type":"string","format":"uuid","title":"Target stock's {@link IShoppingSaleUnitStock.id}","description":"Target stock's {@link IShoppingSaleUnitStock.id}.\n\nIt must be matched with the {@link choices} property."},"choices":{"type":"array","items":{"type":"object","properties":{"option_id":{"type":"string","format":"uuid","title":"Target option's {@link IShoppingSaleUnitOption.id}","description":"Target option's {@link IShoppingSaleUnitOption.id}."},"candidate_id":{"type":"string","format":"uuid","nullable":true,"title":"Target candidate's {@link IShoppingSaleUnitOptionCandidate.id}","description":"Target candidate's {@link IShoppingSaleUnitOptionCandidate.id}.\n\nWhen target option's type is `select`, then this attribute is not\n`null` but has a value."},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}],"title":"Written value about the option","description":"Written value about the option.\n\nWhen target option's type is not `select`, but an atomic type value\nlike `boolean`, `number` or `string`, then this attribute is not\n`null` but has the matched atomic value."}},"required":["option_id","candidate_id","value"],"description":"Creation information of the choice for each option.\n\nWhen record being created, its corresponding structure would be\n{@link IShoppingSaleUnitStockChoice.IInvert}."},"title":"Creation information of the choices for each option","description":"Creation information of the choices for each option."},"quantity":{"type":"integer","minimum":1,"title":"Quantity of the stock to purchase","description":"Quantity of the stock to purchase.\n\nThis value is multiplied by the {@link IShoppingCartCommodity.volume}."}},"required":["unit_id","stock_id","choices","quantity"],"description":"Creation information of the commodity stock of shopping cart.\n\nWhen record being created, its corresponding structure would be\n{@link IShoppingSaleSnapshotUnit.IInvert} and\n{@link IShoppingSaleSnapshotUnitStock.IInvert}."},"minItems":1,"title":"List of the stocks to be purchased","description":"List of the stocks to be purchased."},"volume":{"type":"integer","minimum":1,"title":"Volume of the commodity to purchase","description":"Volume of the commodity to purchase.\n\nA value indicating how many sets would be multiplied to the children\n{@link IShoppingSaleUnitStock.IInvert.quantity} values."},"accumulate":{"type":"boolean","title":"Whether to accumulate the volume or not","description":"Whether to accumulate the volume or not.\n\nIf this attribute is not `false` and there's same commodity that\ncomposed with same stocks and options, then the volume will be\naccumulated to the existed one.\n\nOtherwise, duplicated commodity would be newly created."}},"required":["sale_id","stocks","volume"],"description":"Creation information of a shopping cart commodity."},"description":"Get replica of a commodity.\n\nGet a {@link IShoppingCartCommodity.ICreate} typed info of the target\ncommodity for replication.\n\nBy the way, if the *cartId* is different with the belonged cart's ID,\nthen 404 not found exception would be thrown. Otherwise, the *cartId*\nhas `null` value, such dependency checking would be skipped, but still\nownership would be validated.\n\nAlso, if target {@link IShoppingSale sale} has been suspended or\n{@link IShoppingSaleUnitStockInventory out of stock} suddenly,\nthen 410 gone error would be thrown, either."},{"method":"delete","path":"/shoppings/customers/orders/{id}","name":"shoppings_customers_orders_eraseById","parameters":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":" Target order's {@link IShoppingOrder.id}"}}}],"description":"Erase an order application.\n\nErase an order application that has been applied by the\n{@link IShoppingCustomer}.\n\nIf the order has been {@link IShoppingOrderPublish published}, then it is\nnot possible to erase the order. In that case, you've to cancel the\npayment by calling the {@link publish.cancel} function."},{"method":"put","path":"/shoppings/customers/orders/{orderId}/goods/{id}/confirm","name":"shoppings_customers_orders_goods_confirm_putByOrderidAndId","parameters":[{"type":"object","properties":{"orderId":{"type":"string","format":"uuid","description":" Belonged order's {@link IShoppingOrder.id }"},"id":{"type":"string","format":"uuid","description":" Target good's {@link IShoppingOrderGood.id }"}}}],"description":"Confirm an order good.\n\nConfirm an {@link IShoppingOrderGood order good} that has been\ncompleted {@link IShoppingDelivery delivering} to the\n{@link IShoppingCustomer customer}.\n\nIn other words, belonged {@link IShoppingOrder order} must be\n{@link IShoppingPublish.paid_at published, paid} and delivery of\nthe good must be {@link IShoppingDeliveryJourney arrived} to the\ncustomer. If not, 428 unprocessable entity error would be thrown."},{"method":"get","path":"/shoppings/customers/orders/{orderId}/publish/able","name":"shoppings_customers_orders_publish_able_getByOrderid","parameters":[{"type":"object","properties":{"orderId":{"type":"string","format":"uuid","description":" Target order's {@link IShoppingOrder.id }"}}}],"output":{"type":"boolean"},"description":"Check publishable.\n\nTest whether the {@link IShoppingOrder order} is publishable or not.\n\nIf the order has not been {@link IShoppingOrderPublish published} and\nnot deleted yet, then it is possible to publish the order. Even thouogh\ntarget {@link IShoppingSale sale} is suspended or\n{@link IShoppingSaleUnitStockInventory out of stock}, it is still possible\nto publish because the order already has been applied."},{"method":"post","path":"/shoppings/customers/orders/{orderId}/publish","name":"shoppings_customers_orders_publish_postByOrderid","parameters":[{"type":"object","properties":{"orderId":{"type":"string","format":"uuid","description":" Target order's {@link IShoppingOrder.id }"},"body":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["cash"]},"address":{"type":"object","properties":{"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number to contact","description":"Mobile number to contact."},"name":{"type":"string","title":"Representative name of the address","description":"Representative name of the address.\n\nSometimes be receiver's name, and sometimes be place name."},"country":{"type":"string","title":"Country name","description":"Country name."},"province":{"type":"string","title":"Province name","description":"Province name."},"city":{"type":"string","title":"City name","description":"City name."},"department":{"type":"string","title":"Department name","description":"Department name."},"possession":{"type":"string","title":"Detailed address containing street name, building number, and room number","description":"Detailed address containing street name, building number, and room number."},"zip_code":{"type":"string","title":"Zip code, or postal code","description":"Zip code, or postal code."},"special_note":{"type":"string","nullable":true,"title":"Special description if required","description":"Special description if required."}},"required":["mobile","name","country","province","city","department","possession","zip_code","special_note"]},"vendor":{"type":"string"},"uid":{"type":"string"}},"required":["type","address","vendor","uid"]},{"type":"object","properties":{"type":{"type":"string","enum":["zero"]},"address":{"type":"object","properties":{"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number to contact","description":"Mobile number to contact."},"name":{"type":"string","title":"Representative name of the address","description":"Representative name of the address.\n\nSometimes be receiver's name, and sometimes be place name."},"country":{"type":"string","title":"Country name","description":"Country name."},"province":{"type":"string","title":"Province name","description":"Province name."},"city":{"type":"string","title":"City name","description":"City name."},"department":{"type":"string","title":"Department name","description":"Department name."},"possession":{"type":"string","title":"Detailed address containing street name, building number, and room number","description":"Detailed address containing street name, building number, and room number."},"zip_code":{"type":"string","title":"Zip code, or postal code","description":"Zip code, or postal code."},"special_note":{"type":"string","nullable":true,"title":"Special description if required","description":"Special description if required."}},"required":["mobile","name","country","province","city","department","possession","zip_code","special_note"]}},"required":["type","address"]}],"description":"Creation info of the publish"}}}],"output":{"type":"object","properties":{"deliveries":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"journeys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the record","description":"Creation time of the record."},"deleted_at":{"type":"string","format":"date-time","nullable":true,"title":"Deletion time of the record","description":"Deletion time of the record."},"type":{"type":"string","enum":["preparing","manufacturing","shipping","delivering"]},"title":{"type":"string","nullable":true,"title":"Title of journey","description":"Title of journey."},"description":{"type":"string","nullable":true,"title":"Description of journey","description":"Description of journey."},"started_at":{"type":"string","format":"date-time","nullable":true,"title":"Start time of the journey","description":"Start time of the journey."},"completed_at":{"type":"string","format":"date-time","nullable":true,"title":"Completion time of the journey","description":"Completion time of the journey."}},"required":["id","created_at","deleted_at","type","title","description","started_at","completed_at"],"description":"Journey of delivery.\n\n`IShoppingDeliveryJourney` is a subsidiary entity of {@link IShoppingDelivery},\ndescribing each journey of the delivery. For reference, the word journey\nmeans each step of the delivery process, such as preparing, shipping, and\ndelivering {@link IShoppingOrderGood goods} to the\n{@link IShoppingCustomer customer}."},"title":"List of journeys of the delivery","description":"List of journeys of the delivery."},"pieces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"publish_id":{"type":"string","format":"uuid","title":"Target order's {@link IShoppingOrderPublish.id}","description":"Target order's {@link IShoppingOrderPublish.id}."},"good_id":{"type":"string","format":"uuid","title":"Target good's {@link IShoppingOrderGood.id}","description":"Target good's {@link IShoppingOrderGood.id}."},"stock_id":{"type":"string","format":"uuid","title":"Target stock's {@link IShoppingSaleUnitStock.id}","description":"Target stock's {@link IShoppingSaleUnitStock.id}."},"quantity":{"type":"number","minimum":0,"title":"Quantity of the stock","description":"Quantity of the stock.\n\nIt can be precision value to express splitted shipping."}},"required":["id","publish_id","good_id","stock_id","quantity"],"description":"Which stocks are delivered.\n\n`IShoppingDeliveryPiece` is a subsidiary entity of {@link IShoppingDelivery},\ndescribing how much quantity is delivered for each\n{@link IShoppingSaleUnitStock stock} in {@link IShoppingOrder}.\n\nFor reference, as an order can be delivered in multiple times due to volume\nor weight problem, it is possible to have multiple `IShoppingDeliveryPiece`\nrecords for a single stock."},"minItems":1,"title":"List of pieces of the delivery","description":"List of pieces of the delivery."},"shippers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"company":{"type":"string","nullable":true},"name":{"type":"string"},"mobile":{"type":"string"}},"required":["id","created_at","company","name","mobile"]},"title":"List of shippers of the delivery","description":"List of shippers of the delivery."},"state":{"type":"string","enum":["none","underway","preparing","manufacturing","shipping","delivering","arrived"],"description":"State of delivery\n\n- `none`: No delivery or journey record\n- `underway`: Some pieces are over preparing, but others are not\n- `preparing`: At least preparing\n- `manufacturing`: At least manufacturing\n- `shipping`: At least shipping\n- `delivering`: At least delivering\n- `arrived`: Every pieces are arrived"},"created_at":{"type":"string","format":"date-time","title":"Creation time of the record","description":"Creation time of the record."}},"required":["id","seller","journeys","pieces","shippers","state","created_at"],"description":"Delivery information.\n\nWhen delivering {@link IShoppingOrderGood goods} to\n{@link IShoppingCustomer customer}, {@link IShoppingSeller seller} can deliver\nmultiple {@link IShoppingSaleUnitStock stocks}, goods at once. Also, it is\npossible to deliver a stock or good in multiple times due to physical restriction\nlike volume or weight problem.\n\nAs you can see from above, the relationship between delivery with\n{@link IShoppingOrder order} (or {@link IShoppingOrderGood good}) is not 1: 1 or\nN: 1, but M: N. Entity `IShoppingDelivery` has been designed to represent such\nrelationship, by referencing target stocks or goods through subsidiary entity\n{@link IShoppingDeliveryPiece}.\n\nAlso, delivery does not end with only one step. It has multiple processes like\nmanufacturing, planning, shipping and delivering. Those steps are represented by\nanother subsidiary entity {@link IShoppingDeliveryJourney}."},"title":"List of deliveries","description":"List of deliveries.\n\nAn {@link IShoppingOrder order} can be delivered in multiple times.\nOf course, the opposite case is also possible, that a\n{@link IShoppingDelivery delivery} can be composed of multiple orders."},"state":{"type":"string","enum":["none","underway","preparing","manufacturing","shipping","delivering","arrived"],"description":"State of delivery\n\n- `none`: No delivery or journey record\n- `underway`: Some pieces are over preparing, but others are not\n- `preparing`: At least preparing\n- `manufacturing`: At least manufacturing\n- `shipping`: At least shipping\n- `delivering`: At least delivering\n- `arrived`: Every pieces are arrived"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the record","description":"Creation time of the record."},"paid_at":{"type":"string","format":"date-time","nullable":true,"title":"Time when the order was paid","description":"Time when the order was paid."},"cancelled_at":{"type":"string","format":"date-time","nullable":true,"title":"Time when the payment was cancelled","description":"Time when the payment was cancelled."},"address":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number to contact","description":"Mobile number to contact."},"name":{"type":"string","title":"Representative name of the address","description":"Representative name of the address.\n\nSometimes be receiver's name, and sometimes be place name."},"country":{"type":"string","title":"Country name","description":"Country name."},"province":{"type":"string","title":"Province name","description":"Province name."},"city":{"type":"string","title":"City name","description":"City name."},"department":{"type":"string","title":"Department name","description":"Department name."},"possession":{"type":"string","title":"Detailed address containing street name, building number, and room number","description":"Detailed address containing street name, building number, and room number."},"zip_code":{"type":"string","title":"Zip code, or postal code","description":"Zip code, or postal code."},"special_note":{"type":"string","nullable":true,"title":"Special description if required","description":"Special description if required."}},"required":["id","created_at","mobile","name","country","province","city","department","possession","zip_code","special_note"],"description":"The address information."}},"required":["deliveries","state","id","created_at","paid_at","cancelled_at","address"],"description":"Order completion and payment information.\n\n`IShoppingOrderPublish` is an entity that embodies the series of processes\nin which a {@link IShoppingCustomer customer} pays for his or her\n{@link IShoppingOrder order}, thereby completing the order. And only after\nthe order is {@link paid_at completed}, can the {@link IShoppingSeller seller}\nrecognize that the customer has purchased his product.\n\nBy the way, please note that just because the `IShoppingOrderPublish` record\nexists, it does not mean that the payment has been completed. Of course, with\n\"credit cards\" and \"Google Pay\", payment application and payment occur at the\nsame time. However, there are some cases where payment is made after the\npayment application, such as \"bank transfer\" or \"virtual account payment\".\nTherefore, to see the completion of payment, be sure to check the\n{@link paid_at} property.\n\nIn addition, even after payment has been made, there may be cases where it is\nsuddenly cancelled, so please be aware of this as well."},"description":"Publish an order.\n\n{@link IShoppingOrderPublish Publish} an {@link IShoppingOrder order} that\nhas been applied by the {@link IShoppingCustomer} with\n{@link IShoppingAddress address} to delivery and payment information gotten\nfrom the payment vendor system.\n\nIf the order has been discounted for entire order price, then no need\nto send payment vendor info. Instead, only address info is required.\n\nAlso, the payment time can be different with the publish time. For example,\nif the payment method is manual bank account transfer, then the payment\nwould be delayed until the customer actually transfer the money. In that\ncase, {@link IShoppingOrderPublish.paid_at} would be `null` value, so\nthat you have to check it after calling this publish function."},{"method":"delete","path":"/shoppings/customers/orders/{orderId}/publish","name":"shoppings_customers_orders_publish_eraseByOrderid","parameters":[{"type":"object","properties":{"orderId":{"type":"string","format":"uuid","description":" Target order's {@link IShoppingOrder.id }"}}}],"description":"Cancel the publish (payment).\n\nCancel payment of an {@link IShoppingOrder order} that has been\n{@link IShoppingOrderPublish published}.\n\nIf target publish's payment method is manual bank account transfer,\nthen it would be cancelled directly. If not, then payment cancel\nrequest would be sent to the payment vendor system."},{"method":"post","path":"/shoppings/customers/sales/{saleId}/questions/{inquiryId}/comments","name":"shoppings_customers_sales_questions_comments_postBySaleidAndInquiryid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Target inquiry's {@link IShoppingSaleInquiry.id }"},"body":{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}}}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales."},{"method":"patch","path":"/shoppings/customers/sales/{saleId}/questions/{inquiryId}/comments","name":"shoppings_customers_sales_questions_comments_patchBySaleidAndInquiryid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},"body":{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"body":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the comments with pagination and searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales."},{"method":"get","path":"/shoppings/customers/sales/{saleId}/questions/{inquiryId}/comments/{id}","name":"shoppings_customers_sales_questions_comments_getBySaleidAndInquiryidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},"id":{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"}}}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales."},{"method":"put","path":"/shoppings/customers/sales/{saleId}/questions/{inquiryId}/comments/{id}","name":"shoppings_customers_sales_questions_comments_putBySaleidAndInquiryidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},"id":{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"},"body":{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot content of the comment."},"description":"Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence."},{"method":"post","path":"/shoppings/customers/sales/{saleId}/questions","name":"shoppings_customers_sales_questions_postBySaleid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"body":{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["secret","format","title","body","files"],"description":"Creation information of the question."}}}],"output":{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"type":{"type":"string","enum":["question"],"title":"Type of the derived inquiry","description":"Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion}\n- `review`: {@link IShoppingSaleReview}"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["seller","id","snapshots","created_at"],"description":"Formal answer for the inquiry by the seller.","nullable":true,"title":"Formal answer for the inquiry by the seller"},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["secret","type","customer","answer","read_by_seller","id","snapshots","created_at"],"description":"Question about sale snapshot.\n\n`IShoppingSaleQuestion` is a subtype entity of {@link IShoppingSaleInquiry},\nand is used when a {@link IShoppingCustomer customer} wants to ask something\nabout a {@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at\nthe time) registered by the {@link IShoppingSeller seller}.\n\nAnd, like most shopping malls, `IShoppingSaleQuestion` also provides\na {@link secret} attribute, allowing you to create a \"secret message\" that can\nonly be viewed by the seller and the customer who wrote the question."},"description":"Write a question article.\n\nWhen a {@link IShoppingCustomer customer} wants to ask something about\na specific {@link IShoppingSale sale}, he/she can ask it by writing a\nnew {@link IShoppingSaleQuestion question article}.\n\nIf the customer does not want to reveal his/her identify and question,\nhe/she can write the question as a secret article. In that case, only\nthe customer and the related {@link IShoppingSeller seller} can see\nthe {@link at detailed content}. Also, such secret question's title and\nwriter name would be masked with `*` characters in the\n{@link index pagiation API}."},{"method":"patch","path":"/shoppings/customers/sales/{saleId}/questions","name":"shoppings_customers_sales_questions_patchBySaleid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"body":{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["seller","id","title","created_at","updated_at"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["secret","customer","answer","read_by_seller","id","title","created_at","updated_at"],"description":"Summarized information of the question."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every summarized questions.\n\nList up every {@link IShoppingSaleQuestion.ISummary summarized questions} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned questions are summarized, not detailed. If you want\nto get the detailed information of a question, use {@link adridges} function\nor {@link at} function for each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.ISummary.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.ISummary.secret} with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/customers/sales/{saleId}/questions/{id}","name":"shoppings_customers_sales_questions_getBySaleidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"id":{"type":"string","format":"uuid","description":" Target question's {@link IShoppingSaleQuestion.id}"}}}],"output":{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"type":{"type":"string","enum":["question"],"title":"Type of the derived inquiry","description":"Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion}\n- `review`: {@link IShoppingSaleReview}"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["seller","id","snapshots","created_at"],"description":"Formal answer for the inquiry by the seller.","nullable":true,"title":"Formal answer for the inquiry by the seller"},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["secret","type","customer","answer","read_by_seller","id","snapshots","created_at"],"description":"Question about sale snapshot.\n\n`IShoppingSaleQuestion` is a subtype entity of {@link IShoppingSaleInquiry},\nand is used when a {@link IShoppingCustomer customer} wants to ask something\nabout a {@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at\nthe time) registered by the {@link IShoppingSeller seller}.\n\nAnd, like most shopping malls, `IShoppingSaleQuestion` also provides\na {@link secret} attribute, allowing you to create a \"secret message\" that can\nonly be viewed by the seller and the customer who wrote the question."},"description":"Get a question info.\n\nGet a detailed {@link IShoppingSaleQuestion question} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s question. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nquestions of the sales except the {@link IShoppingSaleQuestion.secret}\nvalue is `false`."},{"method":"post","path":"/shoppings/customers/sales/{saleId}/questions/{id}","name":"shoppings_customers_sales_questions_postBySaleidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"id":{"type":"string","format":"uuid","description":" Target question's {@link IShoppingSaleQuestion.id}"},"body":{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","title","body","files"],"description":"Creation information of the article."}}}],"output":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"description":"Update a question.\n\nUpdate a {@link IShoppingSaleQuestion question}'s content.\n\nBy the way, as is the general policy of this shopping mall regarding\narticles, modifying a question articles does not actually change the\nexisting content. Modified content is accumulated and recorded in the\nexisting article record as a new\n{@link IShoppingSaleQuestion.ISnapshot snapshot}. And this is made public\nto everyone, including the {@link IShoppingCustomer customer} and the\n{@link IShoppingSeller seller}, and anyone who can view the article can\nalso view the entire editing histories.\n\nThis is to prevent customers or sellers from modifying their articles and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence."},{"method":"patch","path":"/shoppings/customers/sales/{saleId}/questions/abridges","name":"shoppings_customers_sales_questions_abridges_patchBySaleid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"body":{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["seller","id","title","created_at","updated_at","format","body","files"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["secret","customer","answer","read_by_seller","id","title","created_at","updated_at","format","body","files"],"description":"Abridged information of the question."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every abridged questions.\n\nList up every {@link IShoppingSaleQuestion.IAbridge abridged questions} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned questions are abridged, not detailed. If you want\nto get the detailed information of a question, use {@link at} function\nfor each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.IAridge.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.IAridge.secret} with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}."},{"method":"post","path":"/shoppings/customers/sales/{saleId}/reviews/{inquiryId}/comments","name":"shoppings_customers_sales_reviews_comments_postBySaleidAndInquiryid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Target inquiry's {@link IShoppingSaleInquiry.id }"},"body":{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}}}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales."},{"method":"patch","path":"/shoppings/customers/sales/{saleId}/reviews/{inquiryId}/comments","name":"shoppings_customers_sales_reviews_comments_patchBySaleidAndInquiryid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},"body":{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"body":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the comments with pagination and searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales."},{"method":"get","path":"/shoppings/customers/sales/{saleId}/reviews/{inquiryId}/comments/{id}","name":"shoppings_customers_sales_reviews_comments_getBySaleidAndInquiryidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},"id":{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"}}}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales."},{"method":"put","path":"/shoppings/customers/sales/{saleId}/reviews/{inquiryId}/comments/{id}","name":"shoppings_customers_sales_reviews_comments_putBySaleidAndInquiryidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},"id":{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"},"body":{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot content of the comment."},"description":"Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence."},{"method":"post","path":"/shoppings/customers/sales/{saleId}/reviews","name":"shoppings_customers_sales_reviews_postBySaleid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"body":{"type":"object","properties":{"good_id":{"type":"string","format":"uuid","title":"Target good's {@link IShoppingOrderGood.id}","description":"Target good's {@link IShoppingOrderGood.id}."},"score":{"type":"number","minimum":0,"maximum":100,"title":"Score of the review","description":"Score of the review."},"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["good_id","score","format","title","body","files"],"description":"Creation information of the review."}}}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["review"],"title":"Type of the derived inquiry","description":"Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion}\n- `review`: {@link IShoppingSaleReview}"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["seller","id","snapshots","created_at"],"description":"Formal answer for the inquiry by the seller.","nullable":true,"title":"Formal answer for the inquiry by the seller"},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"title":"Score of the review","description":"Score of the review."},"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["score","id","created_at","format","title","body","files"],"description":"Snapshot content of the review article."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["type","customer","answer","read_by_seller","id","snapshots","created_at"],"description":"Reviews for sale snapshots.\n\n`IShoppingSaleReview` is a subtype entity of {@link IShoppingSaleInquiry},\nand is used when a {@link IShoppingCustomer customer} purchases a\n{@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at the time)\nregistered by the {@link IShoppingSeller seller} as a product and leaves a\nreview and rating for it.\n\nFor reference, `IShoppingSaleReview` and\n{@link IShoppingOrderGod shopping_order_goods} have a logarithmic relationship\nof N: 1, but this does not mean that customers can continue to write reviews\nfor the same product indefinitely. Wouldn't there be restrictions, such as\nif you write a review once, you can write an additional review a month later?"},"description":"Write a review article.\n\nWhen a {@link IShoppingCustomer customer} has purchased a specific\n{@link IShoppingSale sale} and get {@link IShoppingDelivery delivered} it,\nhe/she can write a {@link IShoppingSaleReview review} article about the sale.\n\nIf try to write a review article without purchasing or the delivery has not\nbeen completed, 428 unprocessable entity error would be thrown. Also, the\ncustomer can write multiple review articles per an order, but the next\narticle can be written after 2 weeks from the previous article. If not,\n428 unprocessable entity error would be thrown, either."},{"method":"patch","path":"/shoppings/customers/sales/{saleId}/reviews","name":"shoppings_customers_sales_reviews_patchBySaleid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"body":{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"minimum":{"type":"number","minimum":0,"maximum":100},"maximum":{"type":"number","minimum":0,"maximum":100}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at","-score","+score"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number","title":"Score of the review","description":"Score of the review."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["seller","id","title","created_at","updated_at"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["score","customer","answer","read_by_seller","id","title","created_at","updated_at"],"description":"Summarized information of the review."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every summarized reviews.\n\nList up every {@link IShoppingSaleReview.ISummary summarized reviews} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned reviews are summarized, not detailed. If you want\nto get the detailed information of a review, use {@link adridges} function\nor {@link at} function for each article.\n\nAlso, returned review has {@link IShoppingSaleReview.ISummary.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/customers/sales/{saleId}/reviews/{id}","name":"shoppings_customers_sales_reviews_getBySaleidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"id":{"type":"string","format":"uuid","description":" Target review's {@link IShoppingSaleReview.id}"}}}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["review"],"title":"Type of the derived inquiry","description":"Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion}\n- `review`: {@link IShoppingSaleReview}"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["seller","id","snapshots","created_at"],"description":"Formal answer for the inquiry by the seller.","nullable":true,"title":"Formal answer for the inquiry by the seller"},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"title":"Score of the review","description":"Score of the review."},"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["score","id","created_at","format","title","body","files"],"description":"Snapshot content of the review article."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["type","customer","answer","read_by_seller","id","snapshots","created_at"],"description":"Reviews for sale snapshots.\n\n`IShoppingSaleReview` is a subtype entity of {@link IShoppingSaleInquiry},\nand is used when a {@link IShoppingCustomer customer} purchases a\n{@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at the time)\nregistered by the {@link IShoppingSeller seller} as a product and leaves a\nreview and rating for it.\n\nFor reference, `IShoppingSaleReview` and\n{@link IShoppingOrderGod shopping_order_goods} have a logarithmic relationship\nof N: 1, but this does not mean that customers can continue to write reviews\nfor the same product indefinitely. Wouldn't there be restrictions, such as\nif you write a review once, you can write an additional review a month later?"},"description":"Get a review info.\n\nGet a detailed {@link IShoppingSaleReview review} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s review. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nreviews of the sales."},{"method":"post","path":"/shoppings/customers/sales/{saleId}/reviews/{id}","name":"shoppings_customers_sales_reviews_postBySaleidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"id":{"type":"string","format":"uuid","description":" Target review's {@link IShoppingSaleReview.id}"},"body":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"title":"Score of the review","description":"Score of the review."},"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["score","format","title","body","files"],"description":"Updating information of the review."}}}],"output":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"title":"Score of the review","description":"Score of the review."},"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["score","id","created_at","format","title","body","files"],"description":"Snapshot content of the review article."},"description":"Update a review.\n\nUpdadte a {@link IShoppingSaleReview review}'s content and score.\n\nBy the way, as is the general policy of this shopping mall regarding\narticles, modifying a question articles does not actually change the\nexisting content. Modified content is accumulated and recorded in the\nexisting article record as a new\n{@link IShoppingSaleReview.ISnapshot snapshot}. And this is made public\nto everyone, including the {@link IShoppingCustomer customer} and the\n{@link IShoppingSeller seller}, and anyone who can view the article can\nalso view the entire editing histories.\n\nThis is to prevent customers or sellers from modifying their articles and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence."},{"method":"patch","path":"/shoppings/customers/sales/{saleId}/reviews/abridges","name":"shoppings_customers_sales_reviews_abridges_patchBySaleid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"body":{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"minimum":{"type":"number","minimum":0,"maximum":100},"maximum":{"type":"number","minimum":0,"maximum":100}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at","-score","+score"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"title":"Score of the review","description":"Score of the review."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["seller","id","title","created_at","updated_at","format","body","files"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["score","customer","answer","read_by_seller","id","title","created_at","updated_at","format","body","files"],"description":"Abridged information of the review."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every abridged reviews.\n\nList up every {@link IShoppingSaleReview.IAbridge abridged reviews} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned reviews are abridged, not detailed. If you want\nto get the detailed information of a review, use {@link at} function\nfor each article.\n\nAlso, returned review has {@link IShoppingSaleReview.IAridge.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}."},{"method":"patch","path":"/shoppings/customers/systematic/channels","name":"shoppings_customers_systematic_channels_patch","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"search":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-channel.code","-channel.name","-channel.created_at","+channel.code","+channel.name","+channel.created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the channels with pagination and searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every channels.\n\nList up every {@link IShoppingChannel channels} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingChannel.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingChannel.IRequest.sort sort condition}."},{"method":"patch","path":"/shoppings/customers/systematic/sections","name":"shoppings_customers_systematic_sections_patch","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"search":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-section.code","-section.name","-section.created_at","+section.code","+section.name","+section.created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the sections with pagination and searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","code","name","created_at"],"description":"Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every sections.\n\nList up every {@link IShoppingSection sections} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSection.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingSection.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/customers/systematic/sections/{id}","name":"shoppings_customers_systematic_sections_getById","parameters":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":" Target section's {@link IShoppingSection.id}"}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","code","name","created_at"],"description":"Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future."},"description":"Get a section info.\n\nGet a detailed {@link IShoppingSection section} information."},{"method":"get","path":"/shoppings/customers/systematic/sections/{code}/get","name":"shoppings_customers_systematic_sections_get_getByCode","parameters":[{"type":"object","properties":{"code":{"type":"string","description":" Target section's {@link IShoppingSection.code}"}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","code","name","created_at"],"description":"Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future."},"description":"Get a section info by its code.\n\nGet a detailed {@link IShoppingSection section} information by its code."},{"method":"get","path":"/shoppings/sellers/authenticate","name":"shoppings_sellers_authenticate_get","parameters":[{"type":"object","properties":{}}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},"description":"Get seller information.\n\nGet {@link IShoppingSeller.IInvert seller} information of\ncurrent {@link IShoppingCustomer customer}.\n\nIf current {@link IShoppingMember member} is not an seller,\nit throws 403 forbidden exception."},{"method":"post","path":"/shoppings/sellers/authenticate","name":"shoppings_sellers_authenticate_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{}}}}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},"description":"Join as an seller.\n\nJoin as an seller with {@link IShoppingSeller.IJoin joining info}.\n\nThis method is allowed only when the {@link IShoppingCustomer customer} already\nhas joined the {@link IShoppingMember membership}. IF not, he (she) must\naccomplish it before. If not, 403 forbidden exception would be thrown."},{"method":"put","path":"/shoppings/sellers/authenticate/login","name":"shoppings_sellers_authenticate_login_put","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"email":{"type":"string","format":"email","title":"Email address of member","description":"Email address of member.\n\nIf the member has multiple email addresses, just use one of them."},"password":{"type":"string","title":"Password of the member account","description":"Password of the member account."}},"required":["email","password"],"description":"Login request info."}}}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},"description":"Login as an seller.\n\nLogin as an seller with {@link IShoppingSeller.ILogin login info}.\n\nThis method has exactly same effect with\n{@link ShoppingApi.functional.customers.authenticate.login} function, but\nreturned type is a llttle different. The similar function returns\n{@link IShoppingCustomer} type that starting from the customer information, so\nthat you have to access to the seller info through\n`customer.member.seller`. In contrast with that, this method returns\n{@link IShoppingSeller.IInvert} type that starting from the seller\ninfo, so that can access to the customer info through `seller.customer`.\n\nOf course, to use this function, you had to {@link join} as an seller\nbefore. If not, 403 forbidden exception would be thrown,"},{"method":"post","path":"/shoppings/sellers/deliveries","name":"shoppings_sellers_deliveries_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"pieces":{"type":"array","items":{"type":"object","properties":{"publish_id":{"type":"string","format":"uuid","title":"Target order's {@link IShoppingOrderPublish.id}","description":"Target order's {@link IShoppingOrderPublish.id}."},"good_id":{"type":"string","format":"uuid","title":"Target good's {@link IShoppingOrderGood.id}","description":"Target good's {@link IShoppingOrderGood.id}."},"stock_id":{"type":"string","format":"uuid","title":"Target stock's {@link IShoppingSaleUnitStock.id}","description":"Target stock's {@link IShoppingSaleUnitStock.id}."},"quantity":{"type":"number","minimum":0,"title":"Quantity of the stock","description":"Quantity of the stock.\n\nIt can be precision value to express splitted shipping."}},"required":["publish_id","good_id","stock_id","quantity"],"description":"Creation information of the delivery piece."},"minItems":1,"title":"List of pieces of the delivery","description":"List of pieces of the delivery."},"journeys":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["preparing","manufacturing","shipping","delivering"],"title":"Type of journey","description":"Type of journey.\n\n- preparing\n- manufacturing\n- shipping\n- delivering"},"title":{"type":"string","nullable":true,"title":"Title of journey","description":"Title of journey."},"description":{"type":"string","nullable":true,"title":"Description of journey","description":"Description of journey."},"started_at":{"type":"string","format":"date-time","nullable":true,"title":"Start time of the journey","description":"Start time of the journey."},"completed_at":{"type":"string","format":"date-time","nullable":true,"title":"Completion time of the journey","description":"Completion time of the journey."}},"required":["type","title","description","started_at","completed_at"],"description":"Creation information of the delivery journey."},"title":"List of journeys of the delivery","description":"List of journeys of the delivery.\n\nThis is initial data, and it is also possible to accumulate journey data\nafter the delivery creation."},"shippers":{"type":"array","items":{"type":"object","properties":{"company":{"type":"string","nullable":true},"name":{"type":"string"},"mobile":{"type":"string"}},"required":["company","name","mobile"]},"title":"List of shippers of the delivery","description":"List of shippers of the delivery."}},"required":["pieces","journeys","shippers"],"description":"Creation information of the delivery."}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"journeys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the record","description":"Creation time of the record."},"deleted_at":{"type":"string","format":"date-time","nullable":true,"title":"Deletion time of the record","description":"Deletion time of the record."},"type":{"type":"string","enum":["preparing","manufacturing","shipping","delivering"]},"title":{"type":"string","nullable":true,"title":"Title of journey","description":"Title of journey."},"description":{"type":"string","nullable":true,"title":"Description of journey","description":"Description of journey."},"started_at":{"type":"string","format":"date-time","nullable":true,"title":"Start time of the journey","description":"Start time of the journey."},"completed_at":{"type":"string","format":"date-time","nullable":true,"title":"Completion time of the journey","description":"Completion time of the journey."}},"required":["id","created_at","deleted_at","type","title","description","started_at","completed_at"],"description":"Journey of delivery.\n\n`IShoppingDeliveryJourney` is a subsidiary entity of {@link IShoppingDelivery},\ndescribing each journey of the delivery. For reference, the word journey\nmeans each step of the delivery process, such as preparing, shipping, and\ndelivering {@link IShoppingOrderGood goods} to the\n{@link IShoppingCustomer customer}."},"title":"List of journeys of the delivery","description":"List of journeys of the delivery."},"pieces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"publish_id":{"type":"string","format":"uuid","title":"Target order's {@link IShoppingOrderPublish.id}","description":"Target order's {@link IShoppingOrderPublish.id}."},"good_id":{"type":"string","format":"uuid","title":"Target good's {@link IShoppingOrderGood.id}","description":"Target good's {@link IShoppingOrderGood.id}."},"stock_id":{"type":"string","format":"uuid","title":"Target stock's {@link IShoppingSaleUnitStock.id}","description":"Target stock's {@link IShoppingSaleUnitStock.id}."},"quantity":{"type":"number","minimum":0,"title":"Quantity of the stock","description":"Quantity of the stock.\n\nIt can be precision value to express splitted shipping."}},"required":["id","publish_id","good_id","stock_id","quantity"],"description":"Which stocks are delivered.\n\n`IShoppingDeliveryPiece` is a subsidiary entity of {@link IShoppingDelivery},\ndescribing how much quantity is delivered for each\n{@link IShoppingSaleUnitStock stock} in {@link IShoppingOrder}.\n\nFor reference, as an order can be delivered in multiple times due to volume\nor weight problem, it is possible to have multiple `IShoppingDeliveryPiece`\nrecords for a single stock."},"minItems":1,"title":"List of pieces of the delivery","description":"List of pieces of the delivery."},"shippers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"company":{"type":"string","nullable":true},"name":{"type":"string"},"mobile":{"type":"string"}},"required":["id","created_at","company","name","mobile"]},"title":"List of shippers of the delivery","description":"List of shippers of the delivery."},"state":{"type":"string","enum":["none","underway","preparing","manufacturing","shipping","delivering","arrived"],"description":"State of delivery\n\n- `none`: No delivery or journey record\n- `underway`: Some pieces are over preparing, but others are not\n- `preparing`: At least preparing\n- `manufacturing`: At least manufacturing\n- `shipping`: At least shipping\n- `delivering`: At least delivering\n- `arrived`: Every pieces are arrived"},"created_at":{"type":"string","format":"date-time","title":"Creation time of the record","description":"Creation time of the record."}},"required":["id","seller","journeys","pieces","shippers","state","created_at"],"description":"Delivery information.\n\nWhen delivering {@link IShoppingOrderGood goods} to\n{@link IShoppingCustomer customer}, {@link IShoppingSeller seller} can deliver\nmultiple {@link IShoppingSaleUnitStock stocks}, goods at once. Also, it is\npossible to deliver a stock or good in multiple times due to physical restriction\nlike volume or weight problem.\n\nAs you can see from above, the relationship between delivery with\n{@link IShoppingOrder order} (or {@link IShoppingOrderGood good}) is not 1: 1 or\nN: 1, but M: N. Entity `IShoppingDelivery` has been designed to represent such\nrelationship, by referencing target stocks or goods through subsidiary entity\n{@link IShoppingDeliveryPiece}.\n\nAlso, delivery does not end with only one step. It has multiple processes like\nmanufacturing, planning, shipping and delivering. Those steps are represented by\nanother subsidiary entity {@link IShoppingDeliveryJourney}."},"description":"Create a delivery.\n\nCreate a {@link IShoppingDelivery delivery} record targetting\n{@link IShoppingOrder orders}, their {@link IShoppingOrderGood goods} and\n{@link IShoppingSaleUnitStock stocks} ({@link IShoppingDeliveryPiece}) with\n{@link IShoppingDeliveryJourney journeys} and\n{@link IShoppingDeliveryShipper shippers} info.\n\nNote that, composition of the {@link IShoppingDeliveryPiece} must not over\nthe required. To identify which pieces are required, recommend to call\nthe {@link incompletes} function with target orders'\n{@link IShoppingOrderPublish.id}s before calling this one."},{"method":"patch","path":"/shoppings/sellers/deliveries/incompletes","name":"shoppings_sellers_deliveries_incompletes_patch","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"publish_ids":{"type":"array","items":{"type":"string","format":"uuid"}}},"required":["publish_ids"]}}}],"output":{"type":"array","items":{"type":"object","properties":{"publish_id":{"type":"string","format":"uuid","title":"Target order's {@link IShoppingOrderPublish.id}","description":"Target order's {@link IShoppingOrderPublish.id}."},"good_id":{"type":"string","format":"uuid","title":"Target good's {@link IShoppingOrderGood.id}","description":"Target good's {@link IShoppingOrderGood.id}."},"stock_id":{"type":"string","format":"uuid","title":"Target stock's {@link IShoppingSaleUnitStock.id}","description":"Target stock's {@link IShoppingSaleUnitStock.id}."},"quantity":{"type":"number","minimum":0,"title":"Quantity of the stock","description":"Quantity of the stock.\n\nIt can be precision value to express splitted shipping."}},"required":["publish_id","good_id","stock_id","quantity"],"description":"Creation information of the delivery piece."}},"description":"Get list of incomplete pieces.\n\nGet list of {@link IShoppingDeliveryPiece incomplete pieces} of target\norders' {@link IShoppingOrderPublish.id}s.\n\nIf you specify target orders' publish IDs, then this function returns\nincompleted pieces of the orders with computation as an Array of\n{@link IShoppingDeliveryPiece.ICreate} type.\n\nYou can utillize the result to make a huge {@link IShoppingDelivery delivery}\nfor integrated delivering, and also possible to make multiple deliveries for\nsplitted delivering."},{"method":"post","path":"/shoppings/sellers/deliveries/{deliveryId}/journeys","name":"shoppings_sellers_deliveries_journeys_postByDeliveryid","parameters":[{"type":"object","properties":{"deliveryId":{"type":"string","format":"uuid","description":" Belonged delivery's {@link IShoppingDelivery.id }"},"body":{"type":"object","properties":{"type":{"type":"string","enum":["preparing","manufacturing","shipping","delivering"],"title":"Type of journey","description":"Type of journey.\n\n- preparing\n- manufacturing\n- shipping\n- delivering"},"title":{"type":"string","nullable":true,"title":"Title of journey","description":"Title of journey."},"description":{"type":"string","nullable":true,"title":"Description of journey","description":"Description of journey."},"started_at":{"type":"string","format":"date-time","nullable":true,"title":"Start time of the journey","description":"Start time of the journey."},"completed_at":{"type":"string","format":"date-time","nullable":true,"title":"Completion time of the journey","description":"Completion time of the journey."}},"required":["type","title","description","started_at","completed_at"],"description":"Creation information of the delivery journey."}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the record","description":"Creation time of the record."},"deleted_at":{"type":"string","format":"date-time","nullable":true,"title":"Deletion time of the record","description":"Deletion time of the record."},"type":{"type":"string","enum":["preparing","manufacturing","shipping","delivering"]},"title":{"type":"string","nullable":true,"title":"Title of journey","description":"Title of journey."},"description":{"type":"string","nullable":true,"title":"Description of journey","description":"Description of journey."},"started_at":{"type":"string","format":"date-time","nullable":true,"title":"Start time of the journey","description":"Start time of the journey."},"completed_at":{"type":"string","format":"date-time","nullable":true,"title":"Completion time of the journey","description":"Completion time of the journey."}},"required":["id","created_at","deleted_at","type","title","description","started_at","completed_at"],"description":"Journey of delivery.\n\n`IShoppingDeliveryJourney` is a subsidiary entity of {@link IShoppingDelivery},\ndescribing each journey of the delivery. For reference, the word journey\nmeans each step of the delivery process, such as preparing, shipping, and\ndelivering {@link IShoppingOrderGood goods} to the\n{@link IShoppingCustomer customer}."},"description":"Create a new journey.\n\nCreate a new {@link IShoppingDeliveryJourney journey} of the\n{@link IShoppingDelivery delivery}.\n\nThis action may change the related {@link IShoppingOrderGood.state}.\nAlso, if the target journey's type is \"delivering\", whether the property\n{@link IShoppingDeliveryJourney.completed_at} is null or not affects to\nthe related goods' states. If the property is not null, the state becomes\n\"arrived\". Otherwise, the state becomes \"delivering\"."},{"method":"put","path":"/shoppings/sellers/deliveries/{deliveryId}/journeys/{id}/complete","name":"shoppings_sellers_deliveries_journeys_complete_putByDeliveryidAndId","parameters":[{"type":"object","properties":{"deliveryId":{"type":"string","format":"uuid","description":" Belonged delivery's {@link IShoppingDelivery.id }"},"id":{"type":"string","format":"uuid","description":" Target journey's {@link IShoppingDeliveryJourney.id}"},"body":{"type":"object","properties":{"completed_at":{"type":"string","format":"date-time","nullable":true,"title":"Completion time of the journey","description":"Completion time of the journey."}},"required":["completed_at"],"description":"Completion information of the delivery journey."}}}],"description":"Complete a journey.\n\nComplete a {@link IShoppingDeliveryJourney journey} of the\n{@link IShoppingDelivery delivery}. In other words, fills the\n{@link IShoppingDeliveryJourney.completed_at} property with current time.\n\nIf the target journey's type is \"delivering\", this action may change\nthe related {@link IShoppingOrderGood.state goods' states} to be \"arrived\"."},{"method":"delete","path":"/shoppings/sellers/deliveries/{deliveryId}/journeys/{id}","name":"shoppings_sellers_deliveries_journeys_eraseByDeliveryidAndId","parameters":[{"type":"object","properties":{"deliveryId":{"type":"string","format":"uuid","description":" Belonged delivery's {@link IShoppingDelivery.id }"},"id":{"type":"string","format":"uuid","description":" Target journey's {@link IShoppingDeliveryJourney.id}"}}}],"description":"Erase a journey.\n\nErase a {@link IShoppingDeliveryJourney journey} of the\n{@link IShoppingDelivery delivery}.\n\nIf erasing journey is the last one of the belonged delivery, this action\nmay change the related {@link IShoppingOrderGood.state}. By erasing the last\njourney, the state rolls back to the previous."},{"method":"post","path":"/shoppings/sellers/deliveries/{deliveryId}/shippers","name":"shoppings_sellers_deliveries_shippers_postByDeliveryid","parameters":[{"type":"object","properties":{"deliveryId":{"type":"string","format":"uuid","description":" Belonged delivery's {@link IShoppingDelivery.id }"},"body":{"type":"object","properties":{"company":{"type":"string","nullable":true},"name":{"type":"string"},"mobile":{"type":"string"}},"required":["company","name","mobile"]}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"company":{"type":"string","nullable":true},"name":{"type":"string"},"mobile":{"type":"string"}},"required":["id","created_at","company","name","mobile"]},"description":"Create a new shipper.\n\nCreate a new {@link IShoppingDeliveryShipper shipper} of the\n{@link IShoppingDelivery delivery}.\n\nThis action does not affect to the related {@link IShoppingOrder orders} or\n{@link IShoppingOrderGood goods} like {@link IShoppingDeliveryJourney}\nor {@link IShoppingDeliveryPiece} case, but just informs to the\n{@link IShoppingCustomer customer}."},{"method":"delete","path":"/shoppings/sellers/coupons/{id}","name":"shoppings_sellers_coupons_eraseById","parameters":[{"type":"object","properties":{"id":{"type":"string","description":" Target coupon's {@link IShoppingCoupon.id}"}}}],"description":"Erase a coupon.\n\nErase a {@link IShoppingCoupon coupon} with given ID.\n\nFor reference, if there're some {@link IShoppingCouponTicket tickets}\nwhich are already issued from the target coupon, they would not be affected.\nThose tickets are still valid until their expration time."},{"method":"put","path":"/shoppings/sellers/sales/{id}/open","name":"shoppings_sellers_sales_open_putById","parameters":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":" Target sale's {@link IShoppingSale.id}"},"body":{"type":"object","properties":{"opened_at":{"type":"string","format":"date-time","nullable":true,"title":"Opening time of the sale","description":"Opening time of the sale."},"closed_at":{"type":"string","format":"date-time","nullable":true,"title":"Closing time of the sale","description":"Closing time of the sale.\n\nIf this value is `null`, the sale be continued forever."}},"required":["opened_at","closed_at"],"description":"Update opening time information of sale."}}}],"description":"Change opening and closing time of a sale.\n\nUpdate a {@link IShoppingSale sale}'s opening and closing time.\n\nBy the way, if the sale still be opened or closed, it is not possible to\nchange the opening time. In contrary, if the sale already had been opened\nbut still not closed, it is possible to change the closing time.\n\nOf course, if closing time is less than opening time or not,\n428 unprocessable entity error would be thrown."},{"method":"post","path":"/shoppings/sellers/sales/{id}/replica","name":"shoppings_sellers_sales_replica_postById","parameters":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":" Target sale's {@link IShoppingSale.id}"}}}],"output":{"type":"object","properties":{"section_code":{"type":"string","title":"Belonged section's {@link IShoppingSection.code}","description":"Belonged section's {@link IShoppingSection.code}."},"status":{"type":"string","enum":["paused","suspended"],"nullable":true,"title":"Initial status of the sale","description":"Initial status of the sale.\n\n`null` or `undefined`: No restriction\n`paused`: Starts with {@link ITimestamps.paused_at paused} status\n`suspended`: Starts with {@link ITimestamps.suspended_at suspended} status"},"opened_at":{"type":"string","format":"date-time","nullable":true,"title":"Opening time of the sale","description":"Opening time of the sale."},"closed_at":{"type":"string","format":"date-time","nullable":true,"title":"Closing time of the sale","description":"Closing time of the sale.\n\nIf this value is `null`, the sale be continued forever."},"content":{"type":"object","properties":{"title":{"type":"string"},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string"},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]}},"thumbnails":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]}}},"required":["title","format","body","files","thumbnails"]},"channels":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","title":"Target channel's {@link IShoppingChannel.code}","description":"Target channel's {@link IShoppingChannel.code}."},"category_ids":{"type":"array","items":{"type":"string","format":"uuid"},"title":"List of target categories' {@link IShoppingChannelCategory.id}s","description":"List of target categories' {@link IShoppingChannelCategory.id}s.\n\nIf empty, it means all categories of the channel is listing the sale."}},"required":["code","category_ids"],"description":"Creation information of the target channel (and categories) of sale to sell."}},"units":{"type":"array","items":{"type":"object","properties":{"options":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean"],"title":"Type of descriptive option","description":"Type of descriptive option.\n\nWhich typed value should be written when purchasing."},"name":{"type":"string","title":"Readable name of the option","description":"Readable name of the option."}},"required":["type","name"],"description":"Creation information of the descriptive option."},{"type":"object","properties":{"type":{"type":"string","enum":["select"],"title":"Discriminant for the type of selectable option","description":"Discriminant for the type of selectable option."},"name":{"type":"string","title":"Represents the name of the option","description":"Represents the name of the option."},"variable":{"type":"boolean","title":"Whether the option is variable or not","description":"Whether the option is variable or not.\n\nWhen type of current option is \"select\", this attribute means whether\nselecting different candidate value affects the final stock or not."},"candidates":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","title":"Represents the name of the candidate value","description":"Represents the name of the candidate value."}},"required":["name"],"description":"Creation information of the candidate value."},"minItems":1,"title":"List of candidate values","description":"List of candidate values."}},"required":["type","name","variable","candidates"],"description":"Creation information of the selectable option."}]},"title":"List of options","description":"List of options."},"stocks":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","title":"Representative name of the stock","description":"Representative name of the stock."},"price":{"type":"object","properties":{"nominal":{"type":"number","minimum":0,"title":"Nominal price","description":"Nominal price.\n\nThis is not {@link real real price} to pay, but just a nominal price to show.\nIf this value is greater than the {@link real real price}, it would be shown\nlike {@link IShoppingSeller seller} is giving a discount."},"real":{"type":"number","minimum":0,"title":"Real price to pay","description":"Real price to pay."}},"required":["nominal","real"],"description":"Shopping price interface."},"quantity":{"type":"integer","minimum":1,"title":"Initial inventory quantity","description":"Initial inventory quantity."},"choices":{"type":"array","items":{"type":"object","properties":{"option_index":{"type":"integer","description":"Target option's index number in\n{@link IShoppingSaleUnit.ICreate.options}."},"candidate_index":{"type":"integer","description":"Target candidate's index number in\n{@link IShoppingSaleUnitSelectableOption.ICreate.candidates}."}},"required":["option_index","candidate_index"],"description":"Creation information of stock choice."},"title":"List of choices","description":"List of choices.\n\nWhich candidate values being chosen for each option."}},"required":["name","price","quantity","choices"],"description":"Creation information of the stock."},"minItems":1,"title":"List of final stocks","description":"List of final stocks."},"name":{"type":"string","title":"Representative name of the unit","description":"Representative name of the unit."},"primary":{"type":"boolean","title":"Whether the unit is primary or not","description":"Whether the unit is primary or not.\n\nJust a labeling value."},"required":{"type":"boolean","title":"Whether the unit is required or not","description":"Whether the unit is required or not.\n\nWhen the unit is required, the customer must select the unit. If do not\nselect, customer can't buy it.\n\nFor example, if there's a sale \"Macbook Set\" and one of the unit is the\n\"Main Body\", is it possible to buy the \"Macbook Set\" without the\n\"Main Body\" unit? This property is for that case."}},"required":["options","stocks","name","primary","required"],"description":"Creation information of sale unit."},"minItems":1},"tags":{"type":"array","items":{"type":"string"}}},"required":["section_code","opened_at","closed_at","content","channels","units","tags"],"description":"Creation information of sale."},"description":"Get replica of a sale.\n\nGet a {@link IShoppingSale.ICreate} typed info of the target sale for\nreplication.\n\nIt would be useful for creating a new replication\n{@link IShoppingSale sale} with similar innformatiopn."},{"method":"delete","path":"/shoppings/sellers/sales/{id}/pause","name":"shoppings_sellers_sales_pause_eraseById","parameters":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":" Target sale's {@link IShoppingSale.id}"}}}],"description":"Pause a sale.\n\nPause a {@link IShoppingSale sale} from {@link open opened} state.\nTherefore, the sale can not be operated again until it be\n{@link restore restored}. By the way, {@link IShoppingCustomer customer}\nstill can sale from the {@link index} and {@link at} API endpints, but\n\"paused\" label would be attached.\n\nAlso, customer no more can put into the shopping cart, either.\nEven the sale already had been put into the shopping cart, the\n{@link IShoppingCartCommodity commodity} will not be listed on the\nshopping cart. Also, it is not possible to appling an\n{@link IShoppingOrder order} with the paused sale's commodity, either.\n\nBy the way, if the sale already had been applied to an order, the order\ncan be {@link IShoppingOrderPublish published} and\n{@link IShoppingSeller seller} must {@link IShoppingDelivery deliver} the\ngood to the customer."},{"method":"delete","path":"/shoppings/sellers/sales/{id}/suspend","name":"shoppings_sellers_sales_suspend_eraseById","parameters":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":" Target sale's {@link IShoppingSale.id}"}}}],"description":"Suspend a sale.\n\nSuspend a {@link IShoppingSale sale} from {@link open opened} state.\nTherefore, the sale can not be operated again until it be\n{@link restore restored} and {@link IShoppingCustomer customer} cannot\nsee the sale from the {@link index} and {@link at} API.\n\nAlso, customer no more can put into the shopping cart, either.\nEven the sale already had been put into the shopping cart, the\n{@link IShoppingCartCommodity commodity} will not be listed on the\nshopping cart. Also, it is not possible to appling an\n{@link IShoppingOrder order} with the suspended sale's commodity, either.\n\nBy the way, if the sale already had been applied to an order, the order\ncan be {@link IShoppingOrderPublish published} and\n{@link IShoppingSeller seller} must {@link IShoppingDelivery deliver} the\ngood to the customer."},{"method":"put","path":"/shoppings/sellers/sales/{id}/restore","name":"shoppings_sellers_sales_restore_putById","parameters":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":" Target sale's {@link IShoppingSale.id}"}}}],"description":"Restore a sale\n\nRestore a {@link IShoppingSale sale} from {@link pause paused} or\n{@link suspend suspended} state\n\nTherefore the sale can be operated again if its\n{@link IShoppingSale.closed_at closing time} has not been reached.\nAlso, if a {@link IShoppingCustomer customer} had put the sale into the\nshopping cart when being paused or suspended, the\n{@link IShoppingCartCommodity commodity} will be listed again on the\nshopping cart."},{"method":"post","path":"/shoppings/sellers/sales/{saleId}/questions/{questionId}/answer","name":"shoppings_sellers_sales_questions_answer_postBySaleidAndQuestionid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"questionId":{"type":"string","format":"uuid","description":" Target question's {@link IShoppingSaleQuestion.id }"},"body":{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","title","body","files"],"description":"Creation information of the article."}}}],"output":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["seller","id","snapshots","created_at"],"description":"Answers to questions about sale snapshots.\n\n`IShoppingSaleInquiryAnswer` is an entity that embodies the official\nanswer written by the {@link IShoppingSeller seller} to the\n{@link IShoppingSaleInquiry inquiry} written by the\n{@link IShoppingCustomer customer}.\n\nOf course, in addition to writing an official response like this, it is\nalso possible for the seller to communicate with the inqjuiry written\ncustomer and multiple customers through\n{@link IShoppingSaleInquiryComment comments} in the attribution inquiry.\n\nFor refererence, it is not possible to write comments on this answer.\nEncourage people to write comments on the inquiry article. This is to\nprevent comments from being scattered in both inquiry and answer\narticles."},"description":"Write an answer article.\n\nWrite a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry question article} written by a\n{@link IShoppingCustomer}.\n\nNote that, this is the formal answer that can be written only one per\na question article (but {@link update updatable}). Therefore, it needs to\nguide the {@link IShoppingSeller seller} to write it carefully.\n\nAlso, as seller can write {@link IShoppingSaleInquiryComment comments} to\nthe question article as many as he/she wants, it would be useful for\nadditional communication."},{"method":"put","path":"/shoppings/sellers/sales/{saleId}/questions/{questionId}/answer","name":"shoppings_sellers_sales_questions_answer_putBySaleidAndQuestionid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"questionId":{"type":"string","format":"uuid","description":" Target question's {@link IShoppingSaleQuestion.id }"},"body":{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","title","body","files"],"description":"Creation information of the article."}}}],"output":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"]},"description":"Update an answer article.\n\nUpdate a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry question article} written by a\n{@link IShoppingCustomer}.\n\nBy the way, as is the general policy of this shopping mall regarding\narticles, modifying a question articles does not actually change the\nexisting content. Modified content is accumulated and recorded in the\nexisting article record as a new\n{@link IShoppingSaleInquiryAnswer.ISnapshot snapshot}. And this is made\npublic to everyone, including the {@link IShoppingCustomer customer} and the\n{@link IShoppingSeller seller}, and anyone who can view the article can\nalso view the entire editing histories.\n\nThis is to prevent customers or sellers from modifying their articles and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence."},{"method":"post","path":"/shoppings/sellers/sales/{saleId}/questions/{inquiryId}/comments","name":"shoppings_sellers_sales_questions_comments_postBySaleidAndInquiryid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Target inquiry's {@link IShoppingSaleInquiry.id }"},"body":{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}}}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales."},{"method":"patch","path":"/shoppings/sellers/sales/{saleId}/questions/{inquiryId}/comments","name":"shoppings_sellers_sales_questions_comments_patchBySaleidAndInquiryid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},"body":{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"body":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the comments with pagination and searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales."},{"method":"get","path":"/shoppings/sellers/sales/{saleId}/questions/{inquiryId}/comments/{id}","name":"shoppings_sellers_sales_questions_comments_getBySaleidAndInquiryidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},"id":{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"}}}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales."},{"method":"put","path":"/shoppings/sellers/sales/{saleId}/questions/{inquiryId}/comments/{id}","name":"shoppings_sellers_sales_questions_comments_putBySaleidAndInquiryidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},"id":{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"},"body":{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot content of the comment."},"description":"Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence."},{"method":"patch","path":"/shoppings/sellers/sales/{saleId}/questions","name":"shoppings_sellers_sales_questions_patchBySaleid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"body":{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["seller","id","title","created_at","updated_at"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["secret","customer","answer","read_by_seller","id","title","created_at","updated_at"],"description":"Summarized information of the question."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every summarized questions.\n\nList up every {@link IShoppingSaleQuestion.ISummary summarized questions} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned questions are summarized, not detailed. If you want\nto get the detailed information of a question, use {@link adridges} function\nor {@link at} function for each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.ISummary.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.ISummary.secret} with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}."},{"method":"patch","path":"/shoppings/sellers/sales/{saleId}/questions/abridges","name":"shoppings_sellers_sales_questions_abridges_patchBySaleid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"body":{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["seller","id","title","created_at","updated_at","format","body","files"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["secret","customer","answer","read_by_seller","id","title","created_at","updated_at","format","body","files"],"description":"Abridged information of the question."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every abridged questions.\n\nList up every {@link IShoppingSaleQuestion.IAbridge abridged questions} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned questions are abridged, not detailed. If you want\nto get the detailed information of a question, use {@link at} function\nfor each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.IAridge.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.IAridge.secret} with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/sellers/sales/{saleId}/questions/{id}","name":"shoppings_sellers_sales_questions_getBySaleidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"id":{"type":"string","format":"uuid","description":" Target question's {@link IShoppingSaleQuestion.id}"}}}],"output":{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"type":{"type":"string","enum":["question"],"title":"Type of the derived inquiry","description":"Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion}\n- `review`: {@link IShoppingSaleReview}"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["seller","id","snapshots","created_at"],"description":"Formal answer for the inquiry by the seller.","nullable":true,"title":"Formal answer for the inquiry by the seller"},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["secret","type","customer","answer","read_by_seller","id","snapshots","created_at"],"description":"Question about sale snapshot.\n\n`IShoppingSaleQuestion` is a subtype entity of {@link IShoppingSaleInquiry},\nand is used when a {@link IShoppingCustomer customer} wants to ask something\nabout a {@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at\nthe time) registered by the {@link IShoppingSeller seller}.\n\nAnd, like most shopping malls, `IShoppingSaleQuestion` also provides\na {@link secret} attribute, allowing you to create a \"secret message\" that can\nonly be viewed by the seller and the customer who wrote the question."},"description":"Get a question info.\n\nGet a detailed {@link IShoppingSaleQuestion question} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s question. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nquestions of the sales except the {@link IShoppingSaleQuestion.secret}\nvalue is `false`."},{"method":"post","path":"/shoppings/sellers/sales/{saleId}/reviews/{reviewId}/answer","name":"shoppings_sellers_sales_reviews_answer_postBySaleidAndReviewid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"reviewId":{"type":"string","format":"uuid","description":" Target review's {@link IShoppingSaleReview.id }"},"body":{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","title","body","files"],"description":"Creation information of the article."}}}],"output":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["seller","id","snapshots","created_at"],"description":"Answers to questions about sale snapshots.\n\n`IShoppingSaleInquiryAnswer` is an entity that embodies the official\nanswer written by the {@link IShoppingSeller seller} to the\n{@link IShoppingSaleInquiry inquiry} written by the\n{@link IShoppingCustomer customer}.\n\nOf course, in addition to writing an official response like this, it is\nalso possible for the seller to communicate with the inqjuiry written\ncustomer and multiple customers through\n{@link IShoppingSaleInquiryComment comments} in the attribution inquiry.\n\nFor refererence, it is not possible to write comments on this answer.\nEncourage people to write comments on the inquiry article. This is to\nprevent comments from being scattered in both inquiry and answer\narticles."},"description":"Write an answer article.\n\nWrite a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry review article} written by a\n{@link IShoppingCustomer}.\n\nNote that, this is the formal answer that can be written only one per\na review article (but {@link update updatable}). Therefore, it needs to\nguide the {@link IShoppingSeller seller} to write it carefully.\n\nAlso, as seller can write {@link IShoppingSaleInquiryComment comments} to\nthe review article as many as he/she wants, it would be useful for\nadditional communication."},{"method":"put","path":"/shoppings/sellers/sales/{saleId}/reviews/{reviewId}/answer","name":"shoppings_sellers_sales_reviews_answer_putBySaleidAndReviewid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"reviewId":{"type":"string","format":"uuid","description":" Target review's {@link IShoppingSaleReview.id }"},"body":{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","title","body","files"],"description":"Creation information of the article."}}}],"output":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"]},"description":"Update an answer article.\n\nUpdate a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry review article} written by a\n{@link IShoppingCustomer}.\n\nBy the way, as is the general policy of this shopping mall regarding\narticles, modifying a review articles does not actually change the\nexisting content. Modified content is accumulated and recorded in the\nexisting article record as a new\n{@link IShoppingSaleInquiryAnswer.ISnapshot snapshot}. And this is made\npublic to everyone, including the {@link IShoppingCustomer customer} and the\n{@link IShoppingSeller seller}, and anyone who can view the article can\nalso view the entire editing histories.\n\nThis is to prevent customers or sellers from modifying their articles and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence."},{"method":"post","path":"/shoppings/sellers/sales/{saleId}/reviews/{inquiryId}/comments","name":"shoppings_sellers_sales_reviews_comments_postBySaleidAndInquiryid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Target inquiry's {@link IShoppingSaleInquiry.id }"},"body":{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}}}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales."},{"method":"patch","path":"/shoppings/sellers/sales/{saleId}/reviews/{inquiryId}/comments","name":"shoppings_sellers_sales_reviews_comments_patchBySaleidAndInquiryid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},"body":{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"body":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the comments with pagination and searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales."},{"method":"get","path":"/shoppings/sellers/sales/{saleId}/reviews/{inquiryId}/comments/{id}","name":"shoppings_sellers_sales_reviews_comments_getBySaleidAndInquiryidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},"id":{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"}}}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales."},{"method":"put","path":"/shoppings/sellers/sales/{saleId}/reviews/{inquiryId}/comments/{id}","name":"shoppings_sellers_sales_reviews_comments_putBySaleidAndInquiryidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"inquiryId":{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},"id":{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"},"body":{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot content of the comment."},"description":"Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence."},{"method":"patch","path":"/shoppings/sellers/sales/{saleId}/reviews","name":"shoppings_sellers_sales_reviews_patchBySaleid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"body":{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"minimum":{"type":"number","minimum":0,"maximum":100},"maximum":{"type":"number","minimum":0,"maximum":100}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at","-score","+score"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number","title":"Score of the review","description":"Score of the review."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["seller","id","title","created_at","updated_at"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["score","customer","answer","read_by_seller","id","title","created_at","updated_at"],"description":"Summarized information of the review."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every summarized reviews.\n\nList up every {@link IShoppingSaleReview.ISummary summarized reviews} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned reviews are summarized, not detailed. If you want\nto get the detailed information of a review, use {@link adridges} function\nor {@link at} function for each article.\n\nAlso, returned review has {@link IShoppingSaleReview.ISummary.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}."},{"method":"patch","path":"/shoppings/sellers/sales/{saleId}/reviews/abridges","name":"shoppings_sellers_sales_reviews_abridges_patchBySaleid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"body":{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"minimum":{"type":"number","minimum":0,"maximum":100},"maximum":{"type":"number","minimum":0,"maximum":100}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at","-score","+score"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"title":"Score of the review","description":"Score of the review."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["seller","id","title","created_at","updated_at","format","body","files"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["score","customer","answer","read_by_seller","id","title","created_at","updated_at","format","body","files"],"description":"Abridged information of the review."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every abridged reviews.\n\nList up every {@link IShoppingSaleReview.IAbridge abridged reviews} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned reviews are abridged, not detailed. If you want\nto get the detailed information of a review, use {@link at} function\nfor each article.\n\nAlso, returned review has {@link IShoppingSaleReview.IAridge.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/sellers/sales/{saleId}/reviews/{id}","name":"shoppings_sellers_sales_reviews_getBySaleidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"id":{"type":"string","format":"uuid","description":" Target review's {@link IShoppingSaleReview.id}"}}}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["review"],"title":"Type of the derived inquiry","description":"Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion}\n- `review`: {@link IShoppingSaleReview}"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["seller","id","snapshots","created_at"],"description":"Formal answer for the inquiry by the seller.","nullable":true,"title":"Formal answer for the inquiry by the seller"},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"title":"Score of the review","description":"Score of the review."},"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["score","id","created_at","format","title","body","files"],"description":"Snapshot content of the review article."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["type","customer","answer","read_by_seller","id","snapshots","created_at"],"description":"Reviews for sale snapshots.\n\n`IShoppingSaleReview` is a subtype entity of {@link IShoppingSaleInquiry},\nand is used when a {@link IShoppingCustomer customer} purchases a\n{@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at the time)\nregistered by the {@link IShoppingSeller seller} as a product and leaves a\nreview and rating for it.\n\nFor reference, `IShoppingSaleReview` and\n{@link IShoppingOrderGod shopping_order_goods} have a logarithmic relationship\nof N: 1, but this does not mean that customers can continue to write reviews\nfor the same product indefinitely. Wouldn't there be restrictions, such as\nif you write a review once, you can write an additional review a month later?"},"description":"Get a review info.\n\nGet a detailed {@link IShoppingSaleReview review} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s review. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nreviews of the sales."},{"method":"post","path":"/shoppings/sellers/sales/{saleId}/snapshots/{id}/replica","name":"shoppings_sellers_sales_snapshots_replica_postBySaleidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id}"},"id":{"type":"string","format":"uuid","description":" Target snapshot's {@link IShoppingSaleSnapshot.id }"}}}],"output":{"type":"object","properties":{"section_code":{"type":"string","title":"Belonged section's {@link IShoppingSection.code}","description":"Belonged section's {@link IShoppingSection.code}."},"status":{"type":"string","enum":["paused","suspended"],"nullable":true,"title":"Initial status of the sale","description":"Initial status of the sale.\n\n`null` or `undefined`: No restriction\n`paused`: Starts with {@link ITimestamps.paused_at paused} status\n`suspended`: Starts with {@link ITimestamps.suspended_at suspended} status"},"opened_at":{"type":"string","format":"date-time","nullable":true,"title":"Opening time of the sale","description":"Opening time of the sale."},"closed_at":{"type":"string","format":"date-time","nullable":true,"title":"Closing time of the sale","description":"Closing time of the sale.\n\nIf this value is `null`, the sale be continued forever."},"content":{"type":"object","properties":{"title":{"type":"string"},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string"},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]}},"thumbnails":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]}}},"required":["title","format","body","files","thumbnails"]},"channels":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","title":"Target channel's {@link IShoppingChannel.code}","description":"Target channel's {@link IShoppingChannel.code}."},"category_ids":{"type":"array","items":{"type":"string","format":"uuid"},"title":"List of target categories' {@link IShoppingChannelCategory.id}s","description":"List of target categories' {@link IShoppingChannelCategory.id}s.\n\nIf empty, it means all categories of the channel is listing the sale."}},"required":["code","category_ids"],"description":"Creation information of the target channel (and categories) of sale to sell."}},"units":{"type":"array","items":{"type":"object","properties":{"options":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean"],"title":"Type of descriptive option","description":"Type of descriptive option.\n\nWhich typed value should be written when purchasing."},"name":{"type":"string","title":"Readable name of the option","description":"Readable name of the option."}},"required":["type","name"],"description":"Creation information of the descriptive option."},{"type":"object","properties":{"type":{"type":"string","enum":["select"],"title":"Discriminant for the type of selectable option","description":"Discriminant for the type of selectable option."},"name":{"type":"string","title":"Represents the name of the option","description":"Represents the name of the option."},"variable":{"type":"boolean","title":"Whether the option is variable or not","description":"Whether the option is variable or not.\n\nWhen type of current option is \"select\", this attribute means whether\nselecting different candidate value affects the final stock or not."},"candidates":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","title":"Represents the name of the candidate value","description":"Represents the name of the candidate value."}},"required":["name"],"description":"Creation information of the candidate value."},"minItems":1,"title":"List of candidate values","description":"List of candidate values."}},"required":["type","name","variable","candidates"],"description":"Creation information of the selectable option."}]},"title":"List of options","description":"List of options."},"stocks":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","title":"Representative name of the stock","description":"Representative name of the stock."},"price":{"type":"object","properties":{"nominal":{"type":"number","minimum":0,"title":"Nominal price","description":"Nominal price.\n\nThis is not {@link real real price} to pay, but just a nominal price to show.\nIf this value is greater than the {@link real real price}, it would be shown\nlike {@link IShoppingSeller seller} is giving a discount."},"real":{"type":"number","minimum":0,"title":"Real price to pay","description":"Real price to pay."}},"required":["nominal","real"],"description":"Shopping price interface."},"quantity":{"type":"integer","minimum":1,"title":"Initial inventory quantity","description":"Initial inventory quantity."},"choices":{"type":"array","items":{"type":"object","properties":{"option_index":{"type":"integer","description":"Target option's index number in\n{@link IShoppingSaleUnit.ICreate.options}."},"candidate_index":{"type":"integer","description":"Target candidate's index number in\n{@link IShoppingSaleUnitSelectableOption.ICreate.candidates}."}},"required":["option_index","candidate_index"],"description":"Creation information of stock choice."},"title":"List of choices","description":"List of choices.\n\nWhich candidate values being chosen for each option."}},"required":["name","price","quantity","choices"],"description":"Creation information of the stock."},"minItems":1,"title":"List of final stocks","description":"List of final stocks."},"name":{"type":"string","title":"Representative name of the unit","description":"Representative name of the unit."},"primary":{"type":"boolean","title":"Whether the unit is primary or not","description":"Whether the unit is primary or not.\n\nJust a labeling value."},"required":{"type":"boolean","title":"Whether the unit is required or not","description":"Whether the unit is required or not.\n\nWhen the unit is required, the customer must select the unit. If do not\nselect, customer can't buy it.\n\nFor example, if there's a sale \"Macbook Set\" and one of the unit is the\n\"Main Body\", is it possible to buy the \"Macbook Set\" without the\n\"Main Body\" unit? This property is for that case."}},"required":["options","stocks","name","primary","required"],"description":"Creation information of sale unit."},"minItems":1},"tags":{"type":"array","items":{"type":"string"}}},"required":["section_code","opened_at","closed_at","content","channels","units","tags"],"description":"Creation information of sale."},"description":"Get replica of a snapshot.\n\nGet a {@link IShoppingSale.ICreate} typed info of the target\n{@link IShoppingSaleSnapshot snapshot} record for replication.\n\nIt would be useful for creating a new replication {@link IShoppingSale sale}\nfrom the old snapshot."},{"method":"post","path":"/shoppings/sellers/sales/{saleId}/units/{unitId}/stocks/{stockId}/supplements","name":"shoppings_sellers_sales_units_stocks_supplements_postBySaleidAndUnitidAndStockid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"unitId":{"type":"string","format":"uuid","description":" Belonged unit's {@link IShoppingSaleUnit.id }"},"stockId":{"type":"string","format":"uuid","description":" Target stock's {@link IShoppingSaleUnitStock.id }"},"body":{"type":"object","properties":{"value":{"type":"integer","title":"Supplemented quantity","description":"Supplemented quantity."}},"required":["value"],"description":"Creation information of the supplement."}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"integer","title":"Supplemented quantity","description":"Supplemented quantity."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the record","description":"Creation time of the record.\n\nAnother words, the time when inventory of the stock being supplemented."}},"required":["id","value","created_at"],"description":"Supplementation of inventory quantity of stock.\n\nYou know what? If a {@link IShoppingSaleUnitStock stock} has been sold over\nits {@link IShoppingSaleUnitStock.ICreate.quantity initial inventory quantity},\nthe stock can't be sold anymore, because of out of stock. In that case, how the\n{@link IShoppingSeller} should do?\n\nWhen the sotck is sold out, seller can supplement the inventory record by\nregistering this `IShoppingSaleUnitStockSupplement` record. Right, this\n`IShoppingSaleUnitStockSupplement` is an entity that embodies the\nsupplementation of the inventory quantity of the belonged stock."},"description":"Create a supplement.\n\nCreate a {@link IShoppingSaleUnitStockSupplement supplement history} of a\nspecific {@link IShoppingSaleUnitStock stock}.\n\nTherefore, {@link IShoppingSaleUnitStockInventory.income inventory} of the\ntarget stock will be increased by the\n{@link IShoppingSaleUnitStockSupplement.value supplement's value}."},{"method":"patch","path":"/shoppings/sellers/sales/{saleId}/units/{unitId}/stocks/{stockId}/supplements","name":"shoppings_sellers_sales_units_stocks_supplements_patchBySaleidAndUnitidAndStockid","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"unitId":{"type":"string","format":"uuid","description":" Belonged unit's {@link IShoppingSaleUnit.id }"},"stockId":{"type":"string","format":"uuid","description":" Target stock's {@link IShoppingSaleUnitStock.id }"},"body":{"type":"object","properties":{"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at"]},"title":"Sortable columns","description":"Sortable columns."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request information of the stock supplement list."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"integer","title":"Supplemented quantity","description":"Supplemented quantity."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the record","description":"Creation time of the record.\n\nAnother words, the time when inventory of the stock being supplemented."}},"required":["id","value","created_at"],"description":"Supplementation of inventory quantity of stock.\n\nYou know what? If a {@link IShoppingSaleUnitStock stock} has been sold over\nits {@link IShoppingSaleUnitStock.ICreate.quantity initial inventory quantity},\nthe stock can't be sold anymore, because of out of stock. In that case, how the\n{@link IShoppingSeller} should do?\n\nWhen the sotck is sold out, seller can supplement the inventory record by\nregistering this `IShoppingSaleUnitStockSupplement` record. Right, this\n`IShoppingSaleUnitStockSupplement` is an entity that embodies the\nsupplementation of the inventory quantity of the belonged stock."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every supplements.\n\nList up every {@link IShoppingSaleUnitStockSupplement supplement histories}\nof a specific {@link IShoppingSaleUnitStock stock}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleUnitStockSupplement.IRequest.search search condition} in\nthe request body. Also, it is possible to customize sequence order of\nrecords by configuring {@link IShoppingSaleUnitStockSupplement.IRequest.sort}\nproperty."},{"method":"put","path":"/shoppings/sellers/sales/{saleId}/units/{unitId}/stocks/{stockId}/supplements/{id}","name":"shoppings_sellers_sales_units_stocks_supplements_putBySaleidAndUnitidAndStockidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"unitId":{"type":"string","format":"uuid","description":" Belonged unit's {@link IShoppingSaleUnit.id }"},"stockId":{"type":"string","format":"uuid","description":" Target stock's {@link IShoppingSaleUnitStock.id }"},"id":{"type":"string","format":"uuid","description":" Target supplement's {@link IShoppingSaleUnitStockSupplement.id}"},"body":{"type":"object","properties":{"value":{"type":"integer","title":"Supplemented quantity","description":"Supplemented quantity."}},"required":["value"],"description":"Creation information of the supplement."}}}],"description":"Update a supplement.\n\nUpdate quantity value of a {@link IShoppingSaleUnitStockSupplement supplement}\nof a specific {@link IShoppingSaleUnitStock stock}.\n\nTherefore, {@link IShoppingSaleUnitStockInventory.income inventory} of the\ntarget stock will be changed by the\n{@link IShoppingSaleUnitStockSupplement.value supplement's value}."},{"method":"delete","path":"/shoppings/sellers/sales/{saleId}/units/{unitId}/stocks/{stockId}/supplements/{id}","name":"shoppings_sellers_sales_units_stocks_supplements_eraseBySaleidAndUnitidAndStockidAndId","parameters":[{"type":"object","properties":{"saleId":{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},"unitId":{"type":"string","format":"uuid","description":" Belonged unit's {@link IShoppingSaleUnit.id }"},"stockId":{"type":"string","format":"uuid","description":" Target stock's {@link IShoppingSaleUnitStock.id }"},"id":{"type":"string","format":"uuid","description":" Target supplement's {@link IShoppingSaleUnitStockSupplement.id}"}}}],"description":"Erase a supplement.\n\nErase a {@link IShoppingSaleUnitStockSupplement supplement} of a specific\n{@link IShoppingSaleUnitStock stock}.\n\nTherefore, {@link IShoppingSaleUnitStockInventory.income inventory} of the\ntarget stock will be decreased by the\n{@link IShoppingSaleUnitStockSupplement.value supplement's value}."},{"method":"patch","path":"/shoppings/sellers/systematic/channels","name":"shoppings_sellers_systematic_channels_patch","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"search":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-channel.code","-channel.name","-channel.created_at","+channel.code","+channel.name","+channel.created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the channels with pagination and searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every channels.\n\nList up every {@link IShoppingChannel channels} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingChannel.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingChannel.IRequest.sort sort condition}."},{"method":"patch","path":"/shoppings/sellers/systematic/sections","name":"shoppings_sellers_systematic_sections_patch","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"search":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-section.code","-section.name","-section.created_at","+section.code","+section.name","+section.created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the sections with pagination and searching/sorting options."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","code","name","created_at"],"description":"Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every sections.\n\nList up every {@link IShoppingSection sections} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSection.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingSection.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/sellers/systematic/sections/{id}","name":"shoppings_sellers_systematic_sections_getById","parameters":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":" Target section's {@link IShoppingSection.id}"}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","code","name","created_at"],"description":"Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future."},"description":"Get a section info.\n\nGet a detailed {@link IShoppingSection section} information."},{"method":"get","path":"/shoppings/sellers/systematic/sections/{code}/get","name":"shoppings_sellers_systematic_sections_get_getByCode","parameters":[{"type":"object","properties":{"code":{"type":"string","description":" Target section's {@link IShoppingSection.code}"}}}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","code","name","created_at"],"description":"Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future."},"description":"Get a section info by its code.\n\nGet a detailed {@link IShoppingSection section} information by its code."}],"errors":[{"method":"post","path":"/shoppings/admins/coupons","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/admins/coupons","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/admins/coupons/{id}","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/admins/orders","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/admins/orders/{id}","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/admins/sales","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/admins/sales/{id}","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/admins/sales/{saleId}/snapshots","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/admins/sales/{saleId}/snapshots/{id}","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/admins/sales/{saleId}/snapshots/{id}/flip","messages":["Failed to escape $ref"]},{"method":"post","path":"/shoppings/admins/systematic/channels/{channelCode}/categories","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/admins/systematic/channels/{channelCode}/categories","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/admins/systematic/channels/{channelCode}/categories/{id}","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/admins/systematic/channels/{channelCode}/categories/{id}/invert","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/admins/systematic/channels/{id}","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/admins/systematic/channels/hierarchical","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/admins/systematic/channels/{code}/get","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/customers/coupons","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/coupons/{id}","messages":["Failed to escape $ref"]},{"method":"post","path":"/shoppings/customers/coupons/tickets","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/customers/coupons/tickets","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/coupons/tickets/{id}","messages":["Failed to escape $ref"]},{"method":"post","path":"/shoppings/customers/carts/{cartId}/commodities","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/customers/carts/{cartId}/commodities","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/carts/{cartId}/commodities/{id}","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/customers/carts/{cartId}/commodities/discountable","messages":["Failed to escape $ref"]},{"method":"post","path":"/shoppings/customers/orders","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/customers/orders","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/orders/{id}","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/orders/{id}/price","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/customers/orders/{id}/discountable","messages":["Failed to escape $ref"]},{"method":"put","path":"/shoppings/customers/orders/{id}/discount","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/customers/sales","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/sales/{id}","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/customers/sales/{saleId}/snapshots","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/sales/{saleId}/snapshots/{id}","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/sales/{saleId}/snapshots/{id}/flip","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/customers/systematic/channels/{channelCode}/categories","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/systematic/channels/{channelCode}/categories/{id}","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/systematic/channels/{channelCode}/categories/{id}/invert","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/customers/systematic/channels/hierarchical","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/systematic/channels/{id}","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/systematic/channels/{code}/get","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/sellers/deliveries","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/sellers/deliveries/{id}","messages":["Failed to escape $ref"]},{"method":"post","path":"/shoppings/sellers/coupons","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/sellers/coupons","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/sellers/coupons/{id}","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/sellers/orders","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/sellers/orders/{id}","messages":["Failed to escape $ref"]},{"method":"post","path":"/shoppings/sellers/sales","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/sellers/sales","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/sellers/sales/{id}","messages":["Failed to escape $ref"]},{"method":"put","path":"/shoppings/sellers/sales/{id}","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/sellers/sales/{saleId}/snapshots","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/sellers/sales/{saleId}/snapshots/{id}","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/sellers/sales/{saleId}/snapshots/{id}/flip","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/sellers/systematic/channels/{channelCode}/categories","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/sellers/systematic/channels/{channelCode}/categories/{id}","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/sellers/systematic/channels/{channelCode}/categories/{id}/invert","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/sellers/systematic/channels/hierarchical","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/sellers/systematic/channels/{id}","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/sellers/systematic/channels/{code}/get","messages":["Failed to escape $ref"]}],"options":{"keyword":true,"separate":null}} \ No newline at end of file diff --git a/examples/keyword/toss.json b/examples/keyword/toss.json index d751c9e..f690538 100644 --- a/examples/keyword/toss.json +++ b/examples/keyword/toss.json @@ -1,10748 +1 @@ -{ - "openapi": "3.0.3", - "functions": [ - { - "method": "post", - "path": "/v1/billing/authorizations/card", - "name": "v1_billing_authorizations_card_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "cardNumber": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "[0-9]{16}" - }, - "cardExpirationYear": { - "description": "카드 만료 년도 (2 자리).", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "\\d{2}" - }, - "cardExpirationMonth": { - "description": "카드 만료 월 (2 자리).", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^(0[1-9]|1[012])$" - }, - "cardPassword": { - "description": "카드 비밀번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerBirthday": { - "description": "고객의 생년월일.\n\n표기 형식 YYMMDD.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$" - }, - "consumerName": { - "description": "고객의 이름.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customerEmail": { - "description": "고객의 이메일.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "format": "email" - }, - "vbv": { - "type": "object", - "properties": { - "cavv": { - "description": "3D Secure 인증 세션에 대한 인증 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "xid": { - "description": "트랜잭션 ID.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "eci": { - "description": "3DS 인증 결과에 대한 코드 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "cavv", - "xid", - "eci" - ], - "x-typia-jsDocTags": [] - }, - "customerKey": { - "description": "고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "cardNumber", - "cardExpirationYear", - "cardExpirationMonth", - "cardPassword", - "customerBirthday", - "customerKey" - ], - "description": "간편 결제 카드 등록 정보.", - "x-typia-jsDocTags": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "billingKey": { - "description": "{@link ITossBilling } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "method": { - "type": "string", - "enum": [ - "카드" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cardCompany": { - "description": "카드사 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "cardNumber": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "[0-9]{16}" - }, - "authenticatedAt": { - "description": "인증 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "customerKey": { - "description": "고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "mId", - "billingKey", - "method", - "cardCompany", - "cardNumber", - "authenticatedAt", - "customerKey" - ], - "description": "간편 결제 등록 수단 정보.\n\n`ITossBilling` 은 간편 결제 등록 수단을 형상화한 자료구조 인터페이스로써, 고객이 자신의\n신용 카드를 서버에 등록해두고, 매번 결제가 필요할 때마다 카드 정보를 반복 입려하는 일\n없이 간편하게 결제를 진행하고자 할 때 사용한다.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "간편 결제 카드 등록하기.\n\n`billing.authorizations.card.store` 는 고객이 자신의 신록 카드를 서버에 등록해두고,\n매번 결제가 필요할 때마다 카드 정보를 반복 입력하는 일 없이 간편하게 결제를\n진행하고자 할 때, 호출되는 API 함수이다.\n\n참고로 `billing.authorizations.card.store` 는 클라이언트 어플리케이션이 토스\n페이먼츠가 제공하는 간편 결제 카드 등록 창을 사용하는 경우, 귀하의 백엔드 서버가 이를\n실 서비스에서 호출하는 일은 없을 것이다. 다만, 고객이 간편 결제 카드를 등록하는\n상황을 시뮬레이션하기 위하여, 테스트 자동화 프로그램 수준에서 사용될 수는 있다." - }, - { - "method": "post", - "path": "/v1/billing/authorizations/{billingKey}", - "name": "v1_billing_authorizations_postByBillingkey", - "parameters": [ - { - "type": "object", - "properties": { - "billingKey": { - "type": "string", - "description": "대상 정보의 " - }, - "body": { - "type": "object", - "properties": { - "customerKey": { - "description": "고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "customerKey" - ], - "description": "고객 식별자 정보.", - "x-typia-jsDocTags": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "billingKey": { - "description": "{@link ITossBilling } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "method": { - "type": "string", - "enum": [ - "카드" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cardCompany": { - "description": "카드사 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "cardNumber": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "[0-9]{16}" - }, - "authenticatedAt": { - "description": "인증 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "customerKey": { - "description": "고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "mId", - "billingKey", - "method", - "cardCompany", - "cardNumber", - "authenticatedAt", - "customerKey" - ], - "description": "간편 결제 등록 수단 정보.\n\n`ITossBilling` 은 간편 결제 등록 수단을 형상화한 자료구조 인터페이스로써, 고객이 자신의\n신용 카드를 서버에 등록해두고, 매번 결제가 필요할 때마다 카드 정보를 반복 입려하는 일\n없이 간편하게 결제를 진행하고자 할 때 사용한다.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "간편 결제로 등록한 수단 조회하기.\n\n`billing.authorizations.at` 은 고객이 간편 결제를 위하여 토스 페이먼츠 서버에\n등록한 결제 수단을 조회하는 함수이다.\n\n주로 클라이언트 어플리케이션이 토스 페이먼츠가 자체적으로 제공하는 결제 창을 사용하는\n경우, 그래서 프론트 어플리케이션이 귀하의 백엔드 서버에 `billingKey` 와` customerKey`\n만을 전달해주어, 상세 간편 결제 수단 정보가 필요할 때 사용한다." - }, - { - "method": "post", - "path": "/v1/billing/{billingKey}", - "name": "v1_billing_postByBillingkey", - "parameters": [ - { - "type": "object", - "properties": { - "billingKey": { - "type": "string", - "description": "간편 결제에 등록한 수단의 " - }, - "body": { - "type": "object", - "properties": { - "method": { - "type": "string", - "enum": [ - "billing" - ], - "description": "결제 수단이 간편 결제임을 의미함.", - "x-typia-required": true, - "x-typia-optional": false - }, - "billingKey": { - "description": "{@link IPaymentStore } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "customerKey": { - "description": "고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "method", - "billingKey", - "orderId", - "amount", - "customerKey" - ], - "description": "간편 결제를 이용한 결제 신청 정보.", - "x-typia-jsDocTags": [] - } - } - } - ], - "output": { - "oneOf": [ - { - "type": "object", - "properties": { - "card": { - "type": "object", - "properties": { - "company": { - "description": "카드사 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "[0-9]{16}" - }, - "installmentPlanMonths": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "isInterestFree": { - "type": "boolean", - "description": "무이자 할부 적용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "useCardPoint": { - "type": "boolean", - "description": "카드 포인트 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cardType": { - "type": "string", - "enum": [ - "신용", - "체크", - "기프트" - ], - "description": "카드 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "ownerType": { - "type": "string", - "enum": [ - "개인", - "법인" - ], - "description": "카드의 소유자 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "acquireStatus": { - "type": "string", - "enum": [ - "READY", - "CANCELED", - "REQUESTED", - "COMPLETED", - "CANCEL_REQUESTED" - ], - "description": "카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨", - "x-typia-required": true, - "x-typia-optional": false - }, - "receiptUrl": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "company", - "number", - "installmentPlanMonths", - "isInterestFree", - "approveNo", - "useCardPoint", - "cardType", - "ownerType", - "acquireStatus", - "receiptUrl" - ], - "description": "카드 정보.", - "x-typia-jsDocTags": [] - }, - "discount": { - "type": "object", - "properties": { - "amount": { - "description": "카드사의 즉시 할인 프로모션을 적용한 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - } - }, - "nullable": true, - "required": [ - "amount" - ], - "description": "카드사의 즉시 할인 프로모션 정보.", - "x-typia-jsDocTags": [] - }, - "easyPay": { - "type": "string", - "enum": [ - "토스결제", - "페이코", - "삼성페이" - ], - "nullable": true, - "description": "간편결제로 결제한 경우 간편결제 타입 정보.", - "x-typia-required": true, - "x-typia-optional": false - }, - "method": { - "type": "string", - "enum": [ - "카드" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL", - "BILLING" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "card", - "discount", - "easyPay", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "giftCertificate": { - "type": "object", - "properties": { - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETE", - "INCOMPLETE" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "approveNo", - "settlementStatus" - ], - "description": "상품권 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "상품권" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "giftCertificate", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "상품권 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "mobilePhone": { - "type": "object", - "properties": { - "carrier": { - "description": "통신사.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerMobilePhone": { - "description": "고객 휴대폰 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "carrier", - "customerMobilePhone", - "settlementStatus" - ], - "description": "휴대폰 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "휴대폰" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "mobilePhone", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "휴대폰 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "transfer": { - "type": "object", - "properties": { - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "이체 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "bank", - "settlementStatus" - ], - "description": "계좌 이체 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "계좌이체" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "transfer", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "계좌 이체 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "secret": { - "description": "가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "virtualAccount": { - "type": "object", - "properties": { - "accountNumber": { - "description": "계좌 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "accountType": { - "type": "string", - "enum": [ - "일반", - "고정" - ], - "description": "가상 계좌 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerName": { - "description": "고객 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "dueDate": { - "description": "입금 기한.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date" - }, - "expired": { - "type": "boolean", - "description": "가상 계좌 만료 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - }, - "refundStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "NONE", - "FAILED", - "PENDING", - "PARTIAL_FAILED" - ], - "description": "환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "accountNumber", - "accountType", - "bank", - "customerName", - "dueDate", - "expired", - "settlementStatus", - "refundStatus" - ], - "description": "가상 계좌 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "가상계좌" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "secret", - "virtualAccount", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - ], - "description": "결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의 \n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "간편 결제에 등록한 수단으로 결제하기.\n\n`billing.pay` 는 간편 결제에 등록한 수단으로 결제를 진행하고자 할 때 호출하는 API\n함수이다.\n\n그리고 `billing.pay` 는 결제 수단 중 유일하게, 클라이언트 어플리케이션이 토스\n페이먼츠가 제공하는 결제 창을 사용할 수 없어, 귀하의 백엔드 서버가 토스 페이먼츠의\nAPI 함수를 직접 호출해야 하는 경우에 해당한다. 따라서 간편 결제에 관련하여 토스\n페이먼츠와 연동하는 백엔드 서버 및 프론트 어플리케이션을 개발할 때, 반드시 이 상황에\n대한 별도의 설계 및 개발이 필요하니, 이 점을 염두에 두기 바란다.\n\n더하여 `billing.pay` 는 철저히 귀사 백엔드 서버의 판단 아래 호출되는 API 함수인지라,\n이를 통하여 이루어지는 결제는 일절 {@link payments.approve } 가 필요 없다. 다만\n`billing.pay` 는 이처럼 부차적인 승인 과정 필요없이 그 즉시로 결제가 완성되니, 이를\n호출하는 상황에 대하여 세심히 주의를 기울일 필요가 있다" - }, - { - "method": "post", - "path": "/v1/cash-receipts", - "name": "v1_cash_receipts_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류.", - "x-typia-required": true, - "x-typia-optional": false - }, - "paymentKey": { - "description": "귀속 결제의 {@link ITossPayment.paymentKey }.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문의 식별자 ID.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "registrationNumber": { - "description": "현금 영수증 발급을 위한 개인 식별 번호.\n\n현금 영수증의 종류에 따라 휴대폰 번호나 주민등록번호 또는 사업자등록번호 및 \n카드 번호를 입력할 수 있다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "description": "현금 영수증을 발행할 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 금액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "businessNumber": { - "description": "사업자 등록번호.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - } - }, - "required": [ - "type", - "paymentKey", - "orderId", - "orderName", - "registrationNumber", - "amount" - ], - "description": "현금 영수증 입력 정보.", - "x-typia-jsDocTags": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "receiptKey": { - "description": "현금 영수증의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "orderId": { - "description": "주문의 식별자 ID.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "approvalNumber": { - "description": "현금 영수증 승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "approvedAt": { - "description": "현금 영수증 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "canceledAt": { - "description": "현금 영수증 취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "receiptUrl": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "receiptKey", - "type", - "orderId", - "orderName", - "approvalNumber", - "approvedAt", - "canceledAt", - "receiptUrl" - ], - "description": "현금 영수증 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "현금 영수증 발행하기." - }, - { - "method": "post", - "path": "/v1/cash-receipts/{receiptKey}/cancel", - "name": "v1_cash_receipts_cancel_postByReceiptkey", - "parameters": [ - { - "type": "object", - "properties": { - "receiptKey": { - "type": "string", - "description": "현금 영수증의 " - }, - "body": { - "type": "object", - "properties": { - "amount": { - "description": "취소 금액.\n\n미 입력시 현금 영수증에 기재된 {@link ITossCashReceipt.amount 총액}이 취소됨.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - } - }, - "description": "현금 영수증 취소 입력 정보.", - "x-typia-jsDocTags": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "receiptKey": { - "description": "현금 영수증의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "orderId": { - "description": "주문의 식별자 ID.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "approvalNumber": { - "description": "현금 영수증 승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "approvedAt": { - "description": "현금 영수증 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "canceledAt": { - "description": "현금 영수증 취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "receiptUrl": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "receiptKey", - "type", - "orderId", - "orderName", - "approvalNumber", - "approvedAt", - "canceledAt", - "receiptUrl" - ], - "description": "현금 영수증 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "현금 영수증 취소하기." - }, - { - "method": "post", - "path": "/internal/webhook", - "name": "internal_webhook_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "eventType": { - "type": "string", - "enum": [ - "PAYMENT_STATUS_CHANGED" - ], - "description": "이벤트 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "data": { - "type": "object", - "properties": { - "paymentKey": { - "description": "{@link ITossPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED" - ], - "description": "결제 상태.\n\n - DONE: 결제 완료\n - CANCELED: 결제가 취소됨\n - PARTIAL_CANCELED: 결제가 부분 취소됨\n - WAITING_FOR_DEPOSIT: 입금 대기 중", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "paymentKey", - "orderId", - "status" - ], - "description": "웹훅 이벤트 데이터.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "eventType", - "data" - ], - "description": "웹훅 이벤트 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - } - ], - "description": "웹훅 이벤트 더미 리스너.\n\n`internal.webhook` 은 실제 토스 페이먼츠의 결제 서버에는 존재하지 않는 API 로써,\n`fake-toss-payments-server` 의 {@link Configuration.WEBHOOK_URL } 에 아무런 URL 을\n설정하지 않으면, `fake-toss-payments-server` 로부터 발생하는 모든 종류의 웹훅\n이벤트는 이 곳으로 전달되어 무의미하게 사라진다.\n\n따라서 `fake-toss-payments-server` 를 사용하여 토스 페이먼츠 서버와의 연동을 미리\n검증코자 할 때는, 반드시 {@link Configuration.WEBHOOK_URL } 를 설정하여 웹훅\n이벤트가 귀하의 백엔드 서버로 제대로 전달되도록 하자." - }, - { - "method": "get", - "path": "/internal/{paymentKey}/deposit", - "name": "internal_deposit_getByPaymentkey", - "parameters": [ - { - "type": "object", - "properties": { - "paymentKey": { - "type": "string", - "description": "대상 가상 계좌 결제 정보의 " - } - } - } - ], - "output": { - "oneOf": [ - { - "type": "object", - "properties": { - "card": { - "type": "object", - "properties": { - "company": { - "description": "카드사 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "[0-9]{16}" - }, - "installmentPlanMonths": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "isInterestFree": { - "type": "boolean", - "description": "무이자 할부 적용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "useCardPoint": { - "type": "boolean", - "description": "카드 포인트 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cardType": { - "type": "string", - "enum": [ - "신용", - "체크", - "기프트" - ], - "description": "카드 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "ownerType": { - "type": "string", - "enum": [ - "개인", - "법인" - ], - "description": "카드의 소유자 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "acquireStatus": { - "type": "string", - "enum": [ - "READY", - "CANCELED", - "REQUESTED", - "COMPLETED", - "CANCEL_REQUESTED" - ], - "description": "카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨", - "x-typia-required": true, - "x-typia-optional": false - }, - "receiptUrl": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "company", - "number", - "installmentPlanMonths", - "isInterestFree", - "approveNo", - "useCardPoint", - "cardType", - "ownerType", - "acquireStatus", - "receiptUrl" - ], - "description": "카드 정보.", - "x-typia-jsDocTags": [] - }, - "discount": { - "type": "object", - "properties": { - "amount": { - "description": "카드사의 즉시 할인 프로모션을 적용한 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - } - }, - "nullable": true, - "required": [ - "amount" - ], - "description": "카드사의 즉시 할인 프로모션 정보.", - "x-typia-jsDocTags": [] - }, - "easyPay": { - "type": "string", - "enum": [ - "토스결제", - "페이코", - "삼성페이" - ], - "nullable": true, - "description": "간편결제로 결제한 경우 간편결제 타입 정보.", - "x-typia-required": true, - "x-typia-optional": false - }, - "method": { - "type": "string", - "enum": [ - "카드" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL", - "BILLING" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "card", - "discount", - "easyPay", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "giftCertificate": { - "type": "object", - "properties": { - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETE", - "INCOMPLETE" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "approveNo", - "settlementStatus" - ], - "description": "상품권 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "상품권" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "giftCertificate", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "상품권 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "mobilePhone": { - "type": "object", - "properties": { - "carrier": { - "description": "통신사.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerMobilePhone": { - "description": "고객 휴대폰 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "carrier", - "customerMobilePhone", - "settlementStatus" - ], - "description": "휴대폰 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "휴대폰" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "mobilePhone", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "휴대폰 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "transfer": { - "type": "object", - "properties": { - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "이체 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "bank", - "settlementStatus" - ], - "description": "계좌 이체 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "계좌이체" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "transfer", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "계좌 이체 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "secret": { - "description": "가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "virtualAccount": { - "type": "object", - "properties": { - "accountNumber": { - "description": "계좌 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "accountType": { - "type": "string", - "enum": [ - "일반", - "고정" - ], - "description": "가상 계좌 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerName": { - "description": "고객 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "dueDate": { - "description": "입금 기한.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date" - }, - "expired": { - "type": "boolean", - "description": "가상 계좌 만료 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - }, - "refundStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "NONE", - "FAILED", - "PENDING", - "PARTIAL_FAILED" - ], - "description": "환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "accountNumber", - "accountType", - "bank", - "customerName", - "dueDate", - "expired", - "settlementStatus", - "refundStatus" - ], - "description": "가상 계좌 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "가상계좌" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "secret", - "virtualAccount", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - ], - "description": "결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의 \n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "가상 계좌에 입금하기.\n\n`internal.virtual_accounts.deposit` 은 실제 토스 페이먼츠의 결제 서버에는 존재하지\n않는 API 로써, 가상 계좌 결제를 신청한 고객이, 이후 가상 계좌에 목표 금액을 입금하는\n상황을 시뮬레이션할 수 있는 함수이다.\n\n즉 `internal.virtual_accounts.deposit` 는 고객이 스스로에게 가상으로 발급된 계좌에\n입금을 하고, 그에 따라 토스 페이먼츠 서버에서 webhook 이벤트가 발생하여 이를 귀하의\n백엔드 서버로 전송하는 일련의 상황을 테스트하기 위한 함수인 셈이다." - }, - { - "method": "get", - "path": "/v1/payments/{paymentKey}", - "name": "v1_payments_getByPaymentkey", - "parameters": [ - { - "type": "object", - "properties": { - "paymentKey": { - "type": "string", - "description": "결제 정보의 " - } - } - } - ], - "output": { - "oneOf": [ - { - "type": "object", - "properties": { - "card": { - "type": "object", - "properties": { - "company": { - "description": "카드사 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "[0-9]{16}" - }, - "installmentPlanMonths": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "isInterestFree": { - "type": "boolean", - "description": "무이자 할부 적용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "useCardPoint": { - "type": "boolean", - "description": "카드 포인트 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cardType": { - "type": "string", - "enum": [ - "신용", - "체크", - "기프트" - ], - "description": "카드 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "ownerType": { - "type": "string", - "enum": [ - "개인", - "법인" - ], - "description": "카드의 소유자 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "acquireStatus": { - "type": "string", - "enum": [ - "READY", - "CANCELED", - "REQUESTED", - "COMPLETED", - "CANCEL_REQUESTED" - ], - "description": "카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨", - "x-typia-required": true, - "x-typia-optional": false - }, - "receiptUrl": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "company", - "number", - "installmentPlanMonths", - "isInterestFree", - "approveNo", - "useCardPoint", - "cardType", - "ownerType", - "acquireStatus", - "receiptUrl" - ], - "description": "카드 정보.", - "x-typia-jsDocTags": [] - }, - "discount": { - "type": "object", - "properties": { - "amount": { - "description": "카드사의 즉시 할인 프로모션을 적용한 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - } - }, - "nullable": true, - "required": [ - "amount" - ], - "description": "카드사의 즉시 할인 프로모션 정보.", - "x-typia-jsDocTags": [] - }, - "easyPay": { - "type": "string", - "enum": [ - "토스결제", - "페이코", - "삼성페이" - ], - "nullable": true, - "description": "간편결제로 결제한 경우 간편결제 타입 정보.", - "x-typia-required": true, - "x-typia-optional": false - }, - "method": { - "type": "string", - "enum": [ - "카드" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL", - "BILLING" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "card", - "discount", - "easyPay", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "giftCertificate": { - "type": "object", - "properties": { - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETE", - "INCOMPLETE" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "approveNo", - "settlementStatus" - ], - "description": "상품권 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "상품권" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "giftCertificate", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "상품권 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "mobilePhone": { - "type": "object", - "properties": { - "carrier": { - "description": "통신사.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerMobilePhone": { - "description": "고객 휴대폰 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "carrier", - "customerMobilePhone", - "settlementStatus" - ], - "description": "휴대폰 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "휴대폰" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "mobilePhone", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "휴대폰 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "transfer": { - "type": "object", - "properties": { - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "이체 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "bank", - "settlementStatus" - ], - "description": "계좌 이체 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "계좌이체" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "transfer", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "계좌 이체 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "secret": { - "description": "가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "virtualAccount": { - "type": "object", - "properties": { - "accountNumber": { - "description": "계좌 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "accountType": { - "type": "string", - "enum": [ - "일반", - "고정" - ], - "description": "가상 계좌 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerName": { - "description": "고객 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "dueDate": { - "description": "입금 기한.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date" - }, - "expired": { - "type": "boolean", - "description": "가상 계좌 만료 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - }, - "refundStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "NONE", - "FAILED", - "PENDING", - "PARTIAL_FAILED" - ], - "description": "환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "accountNumber", - "accountType", - "bank", - "customerName", - "dueDate", - "expired", - "settlementStatus", - "refundStatus" - ], - "description": "가상 계좌 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "가상계좌" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "secret", - "virtualAccount", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - ], - "description": "결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의 \n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "결제 정보 조회하기.\n\n`payments.at` 은 결제 정보를 조회하는 함수이다.\n\n주로 클라이언트 어플리케이션이 토스 페이먼츠가 자체적으로 제공하는 결제 창을 사용하는\n경우, 그래서 프론트 어플리케이션이 귀하의 백엔드 서버에 `paymentKey` 등 극히 일부의\n식별자 정보만을 전달해주어, 상세 결제 정보가 필요할 때 사용한다.\n\n참고로 토스 페이먼츠는 다른 결제 PG 사들과 다르게, 클라이언트 어플리케이션에서 토스\n페이먼츠의 결제 창을 이용하여 진행한 결제가 바로 확정되는 것은 아니다. 귀사의 백엔드\n서버가 현재의 `payments.at` 을 통하여 해당 결제 정보를 확인하고, {@link approve } 를\n호출하여 직접 승인하기 전까지, 해당 결제는 확정되지 않으니, 이 점에 유의하기 바란다." - }, - { - "method": "post", - "path": "/v1/payments/{paymentKey}", - "name": "v1_payments_postByPaymentkey", - "parameters": [ - { - "type": "object", - "properties": { - "paymentKey": { - "type": "string", - "description": "대상 결제의 " - }, - "body": { - "type": "object", - "properties": { - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - } - }, - "required": [ - "orderId", - "amount" - ], - "description": "결제 승인 정보.", - "x-typia-jsDocTags": [] - } - } - } - ], - "output": { - "oneOf": [ - { - "type": "object", - "properties": { - "card": { - "type": "object", - "properties": { - "company": { - "description": "카드사 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "[0-9]{16}" - }, - "installmentPlanMonths": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "isInterestFree": { - "type": "boolean", - "description": "무이자 할부 적용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "useCardPoint": { - "type": "boolean", - "description": "카드 포인트 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cardType": { - "type": "string", - "enum": [ - "신용", - "체크", - "기프트" - ], - "description": "카드 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "ownerType": { - "type": "string", - "enum": [ - "개인", - "법인" - ], - "description": "카드의 소유자 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "acquireStatus": { - "type": "string", - "enum": [ - "READY", - "CANCELED", - "REQUESTED", - "COMPLETED", - "CANCEL_REQUESTED" - ], - "description": "카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨", - "x-typia-required": true, - "x-typia-optional": false - }, - "receiptUrl": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "company", - "number", - "installmentPlanMonths", - "isInterestFree", - "approveNo", - "useCardPoint", - "cardType", - "ownerType", - "acquireStatus", - "receiptUrl" - ], - "description": "카드 정보.", - "x-typia-jsDocTags": [] - }, - "discount": { - "type": "object", - "properties": { - "amount": { - "description": "카드사의 즉시 할인 프로모션을 적용한 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - } - }, - "nullable": true, - "required": [ - "amount" - ], - "description": "카드사의 즉시 할인 프로모션 정보.", - "x-typia-jsDocTags": [] - }, - "easyPay": { - "type": "string", - "enum": [ - "토스결제", - "페이코", - "삼성페이" - ], - "nullable": true, - "description": "간편결제로 결제한 경우 간편결제 타입 정보.", - "x-typia-required": true, - "x-typia-optional": false - }, - "method": { - "type": "string", - "enum": [ - "카드" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL", - "BILLING" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "card", - "discount", - "easyPay", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "giftCertificate": { - "type": "object", - "properties": { - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETE", - "INCOMPLETE" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "approveNo", - "settlementStatus" - ], - "description": "상품권 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "상품권" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "giftCertificate", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "상품권 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "mobilePhone": { - "type": "object", - "properties": { - "carrier": { - "description": "통신사.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerMobilePhone": { - "description": "고객 휴대폰 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "carrier", - "customerMobilePhone", - "settlementStatus" - ], - "description": "휴대폰 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "휴대폰" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "mobilePhone", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "휴대폰 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "transfer": { - "type": "object", - "properties": { - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "이체 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "bank", - "settlementStatus" - ], - "description": "계좌 이체 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "계좌이체" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "transfer", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "계좌 이체 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "secret": { - "description": "가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "virtualAccount": { - "type": "object", - "properties": { - "accountNumber": { - "description": "계좌 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "accountType": { - "type": "string", - "enum": [ - "일반", - "고정" - ], - "description": "가상 계좌 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerName": { - "description": "고객 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "dueDate": { - "description": "입금 기한.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date" - }, - "expired": { - "type": "boolean", - "description": "가상 계좌 만료 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - }, - "refundStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "NONE", - "FAILED", - "PENDING", - "PARTIAL_FAILED" - ], - "description": "환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "accountNumber", - "accountType", - "bank", - "customerName", - "dueDate", - "expired", - "settlementStatus", - "refundStatus" - ], - "description": "가상 계좌 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "가상계좌" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "secret", - "virtualAccount", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - ], - "description": "결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의 \n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "결제 승인하기.\n\n토스 페이먼츠는 귀사의 백엔드에서 일어난 결제가 아닌 프론트 어플리케이션의 결제 창에서\n이루어진 결제의 경우, 해당 서비스으 백엔드 서버로부터 결제를 승인받기 전까지, 이를\n확정하지 않는다. `payments.approve` 는 바로 이러한 상황에서, 해당 결제를 승인해주는\n함수이다.\n\n만일 귀하가 `fake-toss-payments-server` 를 이용하여 결제를 시뮬레이션하는 경우라면,\n결제 관련 API 를 호출함에 있어 {@link ITossCardPayment.IStore.__approved } 내지\n{@link ITossVirtualAccountPayment.IStore.__approved } 를 `false` 로 함으로써, 별도\n승인이 필요한 이러한 상황을 시뮬레이션 할 수 있다." - }, - { - "method": "post", - "path": "/v1/payments/key-in", - "name": "v1_payments_key_in_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "method": { - "type": "string", - "enum": [ - "card" - ], - "description": "결제 수단이 신용 카드임을 의미.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cardNumber": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "[0-9]{16}" - }, - "cardExpirationYear": { - "description": "카드 만료 년도 (2 자리).", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "\\d{2}" - }, - "cardExpirationMonth": { - "description": "카드 만료 월 (2 자리).", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^(0[1-9]|1[012])$" - }, - "cardPassword": { - "description": "카드 비밀번호.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "cardInstallmentPlan": { - "description": "할부 개월 수.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "amount": { - "description": "지불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세금 총액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customerBirthday": { - "description": "고객의 생년월일.\n\n표기 형식 YYMMDD.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "pattern": "^([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$" - }, - "customerEmail": { - "description": "고객의 이메일.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "format": "email" - }, - "vbv": { - "type": "object", - "properties": { - "cavv": { - "description": "3D Secure 인증 세션에 대한 인증 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "xid": { - "description": "트랜잭션 ID.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "eci": { - "description": "3DS 인증 결과에 대한 코드 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "cavv", - "xid", - "eci" - ], - "x-typia-jsDocTags": [] - }, - "__approved": { - "type": "boolean", - "description": "결제 승인 여부.\n\n오직 가짜 페이먼츠 서버 `fake-toss-payments-server` 에서만 사용되는 값으로써, \n결제 승인을 고의로 지연시키거나 할 때 사용된다. 이 값을 `false` 로 하면, 프론트 \n어플리케이션이 토스 페이먼츠가 제공해주는 결제 창을 사용하여 결제를 진행하는 \n상황을 시뮬레이션할 수 있다.\n\n본디 토스 페이먼츠 서버는 프론트 어플리케이션에서 백엔드 서버를 거치지 않고,\n토스 페이먼츠가 제공해주는 결제 창을 이용하여 직접 결제를 요청하는 경우, \n백엔드에서 이를 별도 {@link functional.payments.approve 승인} 처리해주기 전까지 \n정식 결제로 인청치 아니한다.\n\n반면 백엔드 서버에서 토스 페이먼츠 서버의 API 를 호출하는 경우, 토스 페이먼츠는\n이를 그 즉시로 승인해주기, `fake-toss-payments-server` 에서 별도의 승인 처리가\n필요한 상황을 시뮬레이션하기 위해서는 이러한 속성이 필요한 것.", - "x-typia-required": false, - "x-typia-optional": true - } - }, - "required": [ - "method", - "cardNumber", - "cardExpirationYear", - "cardExpirationMonth", - "amount", - "orderId" - ], - "description": "신용 카드를 이용한 결제 신청 정보.", - "x-typia-jsDocTags": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "card": { - "type": "object", - "properties": { - "company": { - "description": "카드사 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "[0-9]{16}" - }, - "installmentPlanMonths": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "isInterestFree": { - "type": "boolean", - "description": "무이자 할부 적용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "useCardPoint": { - "type": "boolean", - "description": "카드 포인트 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cardType": { - "type": "string", - "enum": [ - "신용", - "체크", - "기프트" - ], - "description": "카드 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "ownerType": { - "type": "string", - "enum": [ - "개인", - "법인" - ], - "description": "카드의 소유자 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "acquireStatus": { - "type": "string", - "enum": [ - "READY", - "CANCELED", - "REQUESTED", - "COMPLETED", - "CANCEL_REQUESTED" - ], - "description": "카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨", - "x-typia-required": true, - "x-typia-optional": false - }, - "receiptUrl": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "company", - "number", - "installmentPlanMonths", - "isInterestFree", - "approveNo", - "useCardPoint", - "cardType", - "ownerType", - "acquireStatus", - "receiptUrl" - ], - "description": "카드 정보.", - "x-typia-jsDocTags": [] - }, - "discount": { - "type": "object", - "properties": { - "amount": { - "description": "카드사의 즉시 할인 프로모션을 적용한 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - } - }, - "nullable": true, - "required": [ - "amount" - ], - "description": "카드사의 즉시 할인 프로모션 정보.", - "x-typia-jsDocTags": [] - }, - "easyPay": { - "type": "string", - "enum": [ - "토스결제", - "페이코", - "삼성페이" - ], - "nullable": true, - "description": "간편결제로 결제한 경우 간편결제 타입 정보.", - "x-typia-required": true, - "x-typia-optional": false - }, - "method": { - "type": "string", - "enum": [ - "카드" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL", - "BILLING" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "card", - "discount", - "easyPay", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "카드로 결제하기.\n\n`payments.key_in` 은 카드를 이용한 결제를 할 때 호출되는 API 함수이다.\n\n참고로 `payments.key_in` 는 클라이언트 어플리케이션이 토스 페이먼츠가 자체적으로\n제공하는 결제 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는\n일은 없을 것이다. 다만, 고객이 카드를 통하여 결제하는 상황을 시뮬레이션하기 위하여,\n테스트 자동화 프로그램 수준에서 사용될 수는 있다.\n\n그리고 귀하의 백엔드 서버가 `payments.key-in` 을 직접 호출하는 경우, 토스 페이먼츠\n서버는 이를 완전히 승인된 결제로 보고 바로 확정한다. 때문에 `payments.key-in` 을\n직접 호출하는 경우, 토스 페이먼츠의 결제 창을 이용하여 별도의 {@link approve } 가\n필요한 때 대비, 훨씬 더 세심한 주의가 요구된다.\n\n더하여 만약 귀하의 백엔드 서버가 `fake-toss-payments-server` 를 이용하여 고객의\n카드 결제를 시뮬레이션하는 경우, {@link ITossCardPayment.IStore.__approved } 값을\n`false` 로 하여 카드 결제의 확정을 고의로 회피할 수 있다. 이를 통하여 토스\n페이먼츠의 결제 창을 이용한 카드 결제의 경우, 별도의 {@link approve } 가 필요한\n상황을 시뮬레이션 할 수 있다." - }, - { - "method": "post", - "path": "/v1/payments/{paymentKey}/cancel", - "name": "v1_payments_cancel_postByPaymentkey", - "parameters": [ - { - "type": "object", - "properties": { - "paymentKey": { - "type": "string", - "description": "결제 정보의 " - }, - "body": { - "type": "object", - "properties": { - "paymentKey": { - "description": "{@link ITossPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "refundReceiveAccount": { - "type": "object", - "properties": { - "bank": { - "description": "은행 정보.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "accountNumber": { - "description": "계좌 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^[0-9]{0,20}$" - }, - "holderName": { - "description": "예금주.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "bank", - "accountNumber", - "holderName" - ], - "x-typia-jsDocTags": [] - }, - "taxAmount": { - "description": "과세 처리 금액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리 금액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - } - }, - "required": [ - "paymentKey", - "cancelReason" - ], - "description": "결제 취소 신청 정보.", - "x-typia-jsDocTags": [] - } - } - } - ], - "output": { - "oneOf": [ - { - "type": "object", - "properties": { - "card": { - "type": "object", - "properties": { - "company": { - "description": "카드사 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "[0-9]{16}" - }, - "installmentPlanMonths": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "isInterestFree": { - "type": "boolean", - "description": "무이자 할부 적용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "useCardPoint": { - "type": "boolean", - "description": "카드 포인트 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cardType": { - "type": "string", - "enum": [ - "신용", - "체크", - "기프트" - ], - "description": "카드 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "ownerType": { - "type": "string", - "enum": [ - "개인", - "법인" - ], - "description": "카드의 소유자 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "acquireStatus": { - "type": "string", - "enum": [ - "READY", - "CANCELED", - "REQUESTED", - "COMPLETED", - "CANCEL_REQUESTED" - ], - "description": "카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨", - "x-typia-required": true, - "x-typia-optional": false - }, - "receiptUrl": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "company", - "number", - "installmentPlanMonths", - "isInterestFree", - "approveNo", - "useCardPoint", - "cardType", - "ownerType", - "acquireStatus", - "receiptUrl" - ], - "description": "카드 정보.", - "x-typia-jsDocTags": [] - }, - "discount": { - "type": "object", - "properties": { - "amount": { - "description": "카드사의 즉시 할인 프로모션을 적용한 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - } - }, - "nullable": true, - "required": [ - "amount" - ], - "description": "카드사의 즉시 할인 프로모션 정보.", - "x-typia-jsDocTags": [] - }, - "easyPay": { - "type": "string", - "enum": [ - "토스결제", - "페이코", - "삼성페이" - ], - "nullable": true, - "description": "간편결제로 결제한 경우 간편결제 타입 정보.", - "x-typia-required": true, - "x-typia-optional": false - }, - "method": { - "type": "string", - "enum": [ - "카드" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL", - "BILLING" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "card", - "discount", - "easyPay", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "giftCertificate": { - "type": "object", - "properties": { - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETE", - "INCOMPLETE" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "approveNo", - "settlementStatus" - ], - "description": "상품권 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "상품권" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "giftCertificate", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "상품권 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "mobilePhone": { - "type": "object", - "properties": { - "carrier": { - "description": "통신사.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerMobilePhone": { - "description": "고객 휴대폰 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "carrier", - "customerMobilePhone", - "settlementStatus" - ], - "description": "휴대폰 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "휴대폰" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "mobilePhone", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "휴대폰 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "transfer": { - "type": "object", - "properties": { - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "이체 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "bank", - "settlementStatus" - ], - "description": "계좌 이체 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "계좌이체" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "transfer", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "계좌 이체 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "secret": { - "description": "가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "virtualAccount": { - "type": "object", - "properties": { - "accountNumber": { - "description": "계좌 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "accountType": { - "type": "string", - "enum": [ - "일반", - "고정" - ], - "description": "가상 계좌 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerName": { - "description": "고객 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "dueDate": { - "description": "입금 기한.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date" - }, - "expired": { - "type": "boolean", - "description": "가상 계좌 만료 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - }, - "refundStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "NONE", - "FAILED", - "PENDING", - "PARTIAL_FAILED" - ], - "description": "환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "accountNumber", - "accountType", - "bank", - "customerName", - "dueDate", - "expired", - "settlementStatus", - "refundStatus" - ], - "description": "가상 계좌 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "가상계좌" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "secret", - "virtualAccount", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - ], - "description": "결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의 \n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "결제 취소하기.\n\n`payments.cancel` 은 결제를 취소하는 API 이다.\n\n결제 취소 입력 정보 {@link ITossPaymentCancel.IStore } 에는 취소 사유를 비롯하여,\n고객에게 환불해 줄 금액과 부가세 및 필요시 환불 계좌 정보 등을 입력하게 되어있다." - }, - { - "method": "post", - "path": "/v1/virtual-accounts", - "name": "v1_virtual_accounts_post", - "parameters": [ - { - "type": "object", - "properties": { - "body": { - "type": "object", - "properties": { - "method": { - "type": "string", - "enum": [ - "virtual-account" - ], - "description": "결제 수단이 가상 계좌임을 의미.", - "x-typia-required": true, - "x-typia-optional": false - }, - "orderId": { - "description": "주문 식별자 번호.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerName": { - "description": "고객 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "__approved": { - "type": "boolean", - "description": "결제 승인 여부.\n\n오직 가짜 페이먼츠 서버 `fake-toss-payments-server` 에서만 사용되는 값으로써, \n결제 승인을 고의로 지연시키거나 할 때 사용된다. 이 값을 `false` 로 하면, 프론트 \n어플리케이션이 토스 페이먼츠가 제공해주는 결제 창을 사용하여 결제를 진행하는 \n상황을 시뮬레이션할 수 있다.\n\n본디 토스 페이먼츠 서버는 프론트 어플리케이션에서 백엔드 서버를 거치지 않고,\n토스 페이먼츠가 제공해주는 결제 창을 이용하여 직접 결제를 요청하는 경우, \n백엔드에서 이를 별도 {@link functional.payments.approve 승인} 처리해주기 전까지 \n정식 결제로 인청치 아니한다.\n\n반면 백엔드 서버에서 토스 페이먼츠 서버의 API 를 호출하는 경우, 토스 페이먼츠는\n이를 그 즉시로 승인해주기, `fake-toss-payments-server` 에서 별도의 승인 처리가\n필요한 상황을 시뮬레이션하기 위해서는 이러한 속성이 필요한 것.", - "x-typia-required": false, - "x-typia-optional": true - } - }, - "required": [ - "method", - "orderId", - "orderName", - "bank", - "customerName", - "amount" - ], - "description": "가상 계좌를 이용한 결제 신청 정보.", - "x-typia-jsDocTags": [] - } - } - } - ], - "output": { - "type": "object", - "properties": { - "secret": { - "description": "가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "virtualAccount": { - "type": "object", - "properties": { - "accountNumber": { - "description": "계좌 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "accountType": { - "type": "string", - "enum": [ - "일반", - "고정" - ], - "description": "가상 계좌 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerName": { - "description": "고객 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "dueDate": { - "description": "입금 기한.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date" - }, - "expired": { - "type": "boolean", - "description": "가상 계좌 만료 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - }, - "refundStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "NONE", - "FAILED", - "PENDING", - "PARTIAL_FAILED" - ], - "description": "환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "accountNumber", - "accountType", - "bank", - "customerName", - "dueDate", - "expired", - "settlementStatus", - "refundStatus" - ], - "description": "가상 계좌 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "가상계좌" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "secret", - "virtualAccount", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "가상 계좌로 결제 신청하기.\n\n`virtual_accounts.store` 는 고객이 결제 수단을 가상 계좌로 선택하는 경우에 호출되는\nAPI 함수이다. 물론 고객이 이처럼 가상 계좌를 선택한 경우, 고객이 지정된 계좌에 돈을\n입금하기 전까지는 결제가 마무리된 것이 아니기에, {@link ITossPayment.status } 값은\n`WAITING_FOR_DEPOSIT` 이 된다.\n\n참고로 `virtual_accounts.store` 는 클라이언트 어플리케이션이 토스 페이먼츠가\n자체적으로 제공하는 결제 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서\n호출하는 일은 없을 것이다. 다만, 고객이 가상 계좌로 결제를 진행하는 상황을\n시뮬레이션하기 위하여, 테스트 자동화 프로그램 수준에서 사용될 수는 있다.\n\n그리고 `virtual_accounts.store` 이후에 고객이 지정된 계좌에 금액을 입금하거든, 토스\n페이먼츠 서버로부터 웹훅 이벤트가 발생되어 귀하의 백엔드 서버로 전송된다. 만약 연동\n대상 토스 페이먼츠 서버가 실제가 아닌 `fake-toss-payments-server` 라면,\n{@link internal.virtual_accounts.deposit } 를 호출하여, 고객이 가상 계좌에 입금하는\n상황을 시뮬레이션 할 수 있다." - } - ], - "errors": [], - "options": { - "keyword": true, - "separate": null - } -} \ No newline at end of file +{"openapi":"3.0.3","functions":[{"method":"post","path":"/v1/billing/authorizations/card","name":"v1_billing_authorizations_card_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"cardNumber":{"type":"string","pattern":"[0-9]{16}","title":"카드 번호","description":"카드 번호."},"cardExpirationYear":{"type":"string","pattern":"\\d{2}","title":"카드 만료 년도 (2 자리)","description":"카드 만료 년도 (2 자리)."},"cardExpirationMonth":{"type":"string","pattern":"^(0[1-9]|1[012])$","title":"카드 만료 월 (2 자리)","description":"카드 만료 월 (2 자리)."},"cardPassword":{"type":"string","title":"카드 비밀번호","description":"카드 비밀번호."},"customerBirthday":{"type":"string","pattern":"^([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$","title":"고객의 생년월일","description":"고객의 생년월일.\n\n표기 형식 YYMMDD."},"consumerName":{"type":"string","title":"고객의 이름","description":"고객의 이름."},"customerEmail":{"type":"string","format":"email","title":"고객의 이메일","description":"고객의 이메일."},"vbv":{"type":"object","properties":{"cavv":{"type":"string","title":"3D Secure 인증 세션에 대한 인증 값","description":"3D Secure 인증 세션에 대한 인증 값."},"xid":{"type":"string","title":"트랜잭션 ID","description":"트랜잭션 ID."},"eci":{"type":"string","title":"3DS 인증 결과에 대한 코드 값","description":"3DS 인증 결과에 대한 코드 값."}},"required":["cavv","xid","eci"],"title":"해외카드로 결제하는 경우 3DS 인증 적용을 위해 사용","description":"해외카드로 결제하는 경우 3DS 인증 적용을 위해 사용.\n\n3DS 인증 결과를 전송해야 하는 경우에만 필수."},"customerKey":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."}},"required":["cardNumber","cardExpirationYear","cardExpirationMonth","cardPassword","customerBirthday","customerKey"],"description":"간편 결제 카드 등록 정보."}}}],"output":{"type":"object","properties":{"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"billingKey":{"type":"string","title":"{@link ITossBilling} 의 식별자 키","description":"{@link ITossBilling} 의 식별자 키."},"method":{"type":"string","enum":["카드"],"title":"결제 수단","description":"결제 수단."},"cardCompany":{"type":"string","title":"카드사 이름","description":"카드사 이름."},"cardNumber":{"type":"string","pattern":"[0-9]{16}","title":"카드 번호","description":"카드 번호."},"authenticatedAt":{"type":"string","format":"date-time","title":"인증 일시","description":"인증 일시."},"customerKey":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."}},"required":["mId","billingKey","method","cardCompany","cardNumber","authenticatedAt","customerKey"],"description":"간편 결제 등록 수단 정보.\n\n`ITossBilling` 은 간편 결제 등록 수단을 형상화한 자료구조 인터페이스로써, 고객이 자신의\n신용 카드를 서버에 등록해두고, 매번 결제가 필요할 때마다 카드 정보를 반복 입려하는 일\n없이 간편하게 결제를 진행하고자 할 때 사용한다."},"description":"간편 결제 카드 등록하기.\n\n`billing.authorizations.card.create` 는 고객이 자신의 신록 카드를 서버에 등록해두고,\n매번 결제가 필요할 때마다 카드 정보를 반복 입력하는 일 없이 간편하게 결제를\n진행하고자 할 때, 호출되는 API 함수이다.\n\n참고로 `billing.authorizations.card.create` 는 클라이언트 어플리케이션이 토스\n페이먼츠가 제공하는 간편 결제 카드 등록 창을 사용하는 경우, 귀하의 백엔드 서버가 이를\n실 서비스에서 호출하는 일은 없을 것이다. 다만, 고객이 간편 결제 카드를 등록하는\n상황을 시뮬레이션하기 위하여, 테스트 자동화 프로그램 수준에서 사용될 수는 있다."},{"method":"post","path":"/v1/billing/authorizations/{billingKey}","name":"v1_billing_authorizations_postByBillingkey","parameters":[{"type":"object","properties":{"billingKey":{"type":"string","description":" 대상 정보의 {@link ITossBilling.billingKey}"},"body":{"type":"object","properties":{"customerKey":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."}},"required":["customerKey"],"description":"고객 식별자 정보."}}}],"output":{"type":"object","properties":{"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"billingKey":{"type":"string","title":"{@link ITossBilling} 의 식별자 키","description":"{@link ITossBilling} 의 식별자 키."},"method":{"type":"string","enum":["카드"],"title":"결제 수단","description":"결제 수단."},"cardCompany":{"type":"string","title":"카드사 이름","description":"카드사 이름."},"cardNumber":{"type":"string","pattern":"[0-9]{16}","title":"카드 번호","description":"카드 번호."},"authenticatedAt":{"type":"string","format":"date-time","title":"인증 일시","description":"인증 일시."},"customerKey":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."}},"required":["mId","billingKey","method","cardCompany","cardNumber","authenticatedAt","customerKey"],"description":"간편 결제 등록 수단 정보.\n\n`ITossBilling` 은 간편 결제 등록 수단을 형상화한 자료구조 인터페이스로써, 고객이 자신의\n신용 카드를 서버에 등록해두고, 매번 결제가 필요할 때마다 카드 정보를 반복 입려하는 일\n없이 간편하게 결제를 진행하고자 할 때 사용한다."},"description":"간편 결제로 등록한 수단 조회하기.\n\n`billing.authorizations.at` 은 고객이 간편 결제를 위하여 토스 페이먼츠 서버에\n등록한 결제 수단을 조회하는 함수이다.\n\n주로 클라이언트 어플리케이션이 토스 페이먼츠가 자체적으로 제공하는 결제 창을 사용하는\n경우, 그래서 프론트 어플리케이션이 귀하의 백엔드 서버에 `billingKey` 와` customerKey`\n만을 전달해주어, 상세 간편 결제 수단 정보가 필요할 때 사용한다."},{"method":"post","path":"/v1/billing/{billingKey}","name":"v1_billing_postByBillingkey","parameters":[{"type":"object","properties":{"billingKey":{"type":"string","description":" 간편 결제에 등록한 수단의 {@link ITossBilling.billingKey}"},"body":{"type":"object","properties":{"method":{"type":"string","enum":["billing"],"title":"결제 수단이 간편 결제임을 의미함","description":"결제 수단이 간편 결제임을 의미함."},"billingKey":{"type":"string","title":"{@link IPaymentStore} 의 식별자 키","description":"{@link IPaymentStore} 의 식별자 키."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"customerKey":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."}},"required":["method","billingKey","orderId","amount","customerKey"],"description":"간편 결제를 이용한 결제 신청 정보."}}}],"output":{"oneOf":[{"type":"object","properties":{"card":{"type":"object","properties":{"company":{"type":"string","title":"카드사 이름","description":"카드사 이름."},"number":{"type":"string","pattern":"[0-9]{16}","title":"카드 번호","description":"카드 번호."},"installmentPlanMonths":{"type":"number","title":"할부 개월 수","description":"할부 개월 수."},"isInterestFree":{"type":"boolean","title":"무이자 할부 적용 여부","description":"무이자 할부 적용 여부."},"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"useCardPoint":{"type":"boolean","title":"카드 포인트 사용 여부","description":"카드 포인트 사용 여부."},"cardType":{"type":"string","enum":["신용","체크","기프트"],"title":"카드 타입","description":"카드 타입."},"ownerType":{"type":"string","enum":["개인","법인"],"title":"카드의 소유자 타입","description":"카드의 소유자 타입."},"acquireStatus":{"type":"string","enum":["READY","CANCELED","REQUESTED","COMPLETED","CANCEL_REQUESTED"],"title":"카드 결제의 매입 상태","description":"카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨"},"receiptUrl":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."}},"required":["company","number","installmentPlanMonths","isInterestFree","approveNo","useCardPoint","cardType","ownerType","acquireStatus","receiptUrl"],"description":"카드 정보."},"discount":{"type":"object","properties":{"amount":{"type":"number","title":"카드사의 즉시 할인 프로모션을 적용한 금액","description":"카드사의 즉시 할인 프로모션을 적용한 금액."}},"required":["amount"],"description":"카드사의 즉시 할인 프로모션 정보.","nullable":true,"title":"카드사의 즉시 할인 프로모션 정보"},"easyPay":{"type":"string","enum":["토스결제","페이코","삼성페이"],"nullable":true,"title":"간편결제로 결제한 경우 간편결제 타입 정보","description":"간편결제로 결제한 경우 간편결제 타입 정보."},"method":{"type":"string","enum":["카드"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL","BILLING"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["card","discount","easyPay","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"카드 결제 정보."},{"type":"object","properties":{"giftCertificate":{"type":"object","properties":{"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"settlementStatus":{"type":"string","enum":["COMPLETE","INCOMPLETE"],"title":"정산 상태","description":"정산 상태."}},"required":["approveNo","settlementStatus"],"description":"상품권 정보."},"method":{"type":"string","enum":["상품권"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["giftCertificate","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"상품권 결제 정보."},{"type":"object","properties":{"mobilePhone":{"type":"object","properties":{"carrier":{"type":"string","title":"통신사","description":"통신사."},"customerMobilePhone":{"type":"string","title":"고객 휴대폰 번호","description":"고객 휴대폰 번호."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."}},"required":["carrier","customerMobilePhone","settlementStatus"],"description":"휴대폰 정보."},"method":{"type":"string","enum":["휴대폰"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["mobilePhone","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"휴대폰 결제 정보."},{"type":"object","properties":{"transfer":{"type":"object","properties":{"bank":{"type":"string","title":"은행명","description":"은행명."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"이체 상태","description":"이체 상태."}},"required":["bank","settlementStatus"],"description":"계좌 이체 정보."},"method":{"type":"string","enum":["계좌이체"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["transfer","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"계좌 이체 결제 정보."},{"type":"object","properties":{"secret":{"type":"string","title":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값","description":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값."},"virtualAccount":{"type":"object","properties":{"accountNumber":{"type":"string","title":"계좌 번호","description":"계좌 번호."},"accountType":{"type":"string","enum":["일반","고정"],"title":"가상 계좌 타입","description":"가상 계좌 타입."},"bank":{"type":"string","title":"은행명","description":"은행명."},"customerName":{"type":"string","title":"고객 이름","description":"고객 이름."},"dueDate":{"type":"string","format":"date","title":"입금 기한","description":"입금 기한."},"expired":{"type":"boolean","title":"가상 계좌 만료 여부","description":"가상 계좌 만료 여부."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."},"refundStatus":{"type":"string","enum":["COMPLETED","NONE","FAILED","PENDING","PARTIAL_FAILED"],"title":"환불 처리 상태","description":"환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료"}},"required":["accountNumber","accountType","bank","customerName","dueDate","expired","settlementStatus","refundStatus"],"description":"가상 계좌 정보."},"method":{"type":"string","enum":["가상계좌"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["secret","virtualAccount","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"가상 계좌 결제 정보."}],"description":"결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```"},"description":"간편 결제에 등록한 수단으로 결제하기.\n\n`billing.pay` 는 간편 결제에 등록한 수단으로 결제를 진행하고자 할 때 호출하는 API\n함수이다.\n\n그리고 `billing.pay` 는 결제 수단 중 유일하게, 클라이언트 어플리케이션이 토스\n페이먼츠가 제공하는 결제 창을 사용할 수 없어, 귀하의 백엔드 서버가 토스 페이먼츠의\nAPI 함수를 직접 호출해야 하는 경우에 해당한다. 따라서 간편 결제에 관련하여 토스\n페이먼츠와 연동하는 백엔드 서버 및 프론트 어플리케이션을 개발할 때, 반드시 이 상황에\n대한 별도의 설계 및 개발이 필요하니, 이 점을 염두에 두기 바란다.\n\n더하여 `billing.pay` 는 철저히 귀사 백엔드 서버의 판단 아래 호출되는 API 함수인지라,\n이를 통하여 이루어지는 결제는 일절 {@link payments.approve} 가 필요 없다. 다만\n`billing.pay` 는 이처럼 부차적인 승인 과정 필요없이 그 즉시로 결제가 완성되니, 이를\n호출하는 상황에 대하여 세심히 주의를 기울일 필요가 있다"},{"method":"post","path":"/v1/cash-receipts","name":"v1_cash_receipts_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"title":"현금 영수증의 종류","description":"현금 영수증의 종류."},"paymentKey":{"type":"string","title":"귀속 결제의 {@link ITossPayment.paymentKey}","description":"귀속 결제의 {@link ITossPayment.paymentKey}."},"orderId":{"type":"string","title":"주문의 식별자 ID","description":"주문의 식별자 ID."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름."},"registrationNumber":{"type":"string","title":"현금 영수증 발급을 위한 개인 식별 번호","description":"현금 영수증 발급을 위한 개인 식별 번호.\n\n현금 영수증의 종류에 따라 휴대폰 번호나 주민등록번호 또는 사업자등록번호 및\n카드 번호를 입력할 수 있다."},"amount":{"type":"number","title":"현금 영수증을 발행할 금액","description":"현금 영수증을 발행할 금액."},"taxFreeAmount":{"type":"number","title":"면세 금액","description":"면세 금액."},"businessNumber":{"type":"string","title":"사업자 등록번호","description":"사업자 등록번호."}},"required":["type","paymentKey","orderId","orderName","registrationNumber","amount"],"description":"현금 영수증 입력 정보."}}}],"output":{"type":"object","properties":{"receiptKey":{"type":"string","title":"현금 영수증의 식별자 키","description":"현금 영수증의 식별자 키."},"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"orderId":{"type":"string","title":"주문의 식별자 ID","description":"주문의 식별자 ID."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름."},"approvalNumber":{"type":"string","title":"현금 영수증 승인 번호","description":"현금 영수증 승인 번호."},"approvedAt":{"type":"string","format":"date-time","title":"현금 영수증 승인 일시","description":"현금 영수증 승인 일시."},"canceledAt":{"type":"string","format":"date-time","nullable":true,"title":"현금 영수증 취소 일시","description":"현금 영수증 취소 일시."},"receiptUrl":{"type":"string","title":"영수증 URL","description":"영수증 URL."}},"required":["receiptKey","type","orderId","orderName","approvalNumber","approvedAt","canceledAt","receiptUrl"],"description":"현금 영수증 정보."},"description":"현금 영수증 발행하기."},{"method":"post","path":"/v1/cash-receipts/{receiptKey}/cancel","name":"v1_cash_receipts_cancel_postByReceiptkey","parameters":[{"type":"object","properties":{"receiptKey":{"type":"string","description":" 현금 영수증의 {@link ITossCashReceipt.receiptKey}"},"body":{"type":"object","properties":{"amount":{"type":"number","title":"취소 금액","description":"취소 금액.\n\n미 입력시 현금 영수증에 기재된 {@link ITossCashReceipt.amount 총액}이 취소됨."}},"description":"현금 영수증 취소 입력 정보."}}}],"output":{"type":"object","properties":{"receiptKey":{"type":"string","title":"현금 영수증의 식별자 키","description":"현금 영수증의 식별자 키."},"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"orderId":{"type":"string","title":"주문의 식별자 ID","description":"주문의 식별자 ID."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름."},"approvalNumber":{"type":"string","title":"현금 영수증 승인 번호","description":"현금 영수증 승인 번호."},"approvedAt":{"type":"string","format":"date-time","title":"현금 영수증 승인 일시","description":"현금 영수증 승인 일시."},"canceledAt":{"type":"string","format":"date-time","nullable":true,"title":"현금 영수증 취소 일시","description":"현금 영수증 취소 일시."},"receiptUrl":{"type":"string","title":"영수증 URL","description":"영수증 URL."}},"required":["receiptKey","type","orderId","orderName","approvalNumber","approvedAt","canceledAt","receiptUrl"],"description":"현금 영수증 정보."},"description":"현금 영수증 취소하기."},{"method":"post","path":"/internal/webhook","name":"internal_webhook_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"eventType":{"type":"string","enum":["PAYMENT_STATUS_CHANGED"],"title":"이벤트 타입","description":"이벤트 타입."},"data":{"type":"object","properties":{"paymentKey":{"type":"string","title":"{@link ITossPayment} 의 식별자 키","description":"{@link ITossPayment} 의 식별자 키."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"status":{"type":"string","enum":["WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED"],"title":"결제 상태","description":"결제 상태.\n\n - DONE: 결제 완료\n - CANCELED: 결제가 취소됨\n - PARTIAL_CANCELED: 결제가 부분 취소됨\n - WAITING_FOR_DEPOSIT: 입금 대기 중"}},"required":["paymentKey","orderId","status"],"description":"웹훅 이벤트 데이터."}},"required":["eventType","data"],"description":"웹훅 이벤트 정보."}}}],"description":"웹훅 이벤트 더미 리스너.\n\n`internal.webhook` 은 실제 토스 페이먼츠의 결제 서버에는 존재하지 않는 API 로써,\n`fake-toss-payments-server` 의 {@link Configuration.WEBHOOK_URL} 에 아무런 URL 을\n설정하지 않으면, `fake-toss-payments-server` 로부터 발생하는 모든 종류의 웹훅\n이벤트는 이 곳으로 전달되어 무의미하게 사라진다.\n\n따라서 `fake-toss-payments-server` 를 사용하여 토스 페이먼츠 서버와의 연동을 미리\n검증코자 할 때는, 반드시 {@link Configuration.WEBHOOK_URL} 를 설정하여 웹훅\n이벤트가 귀하의 백엔드 서버로 제대로 전달되도록 하자."},{"method":"put","path":"/internal/{paymentKey}/deposit","name":"internal_deposit_putByPaymentkey","parameters":[{"type":"object","properties":{"paymentKey":{"type":"string","description":" 대상 가상 계좌 결제 정보의 {@link ITossPayment.paymentKey}"}}}],"output":{"oneOf":[{"type":"object","properties":{"card":{"type":"object","properties":{"company":{"type":"string","title":"카드사 이름","description":"카드사 이름."},"number":{"type":"string","pattern":"[0-9]{16}","title":"카드 번호","description":"카드 번호."},"installmentPlanMonths":{"type":"number","title":"할부 개월 수","description":"할부 개월 수."},"isInterestFree":{"type":"boolean","title":"무이자 할부 적용 여부","description":"무이자 할부 적용 여부."},"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"useCardPoint":{"type":"boolean","title":"카드 포인트 사용 여부","description":"카드 포인트 사용 여부."},"cardType":{"type":"string","enum":["신용","체크","기프트"],"title":"카드 타입","description":"카드 타입."},"ownerType":{"type":"string","enum":["개인","법인"],"title":"카드의 소유자 타입","description":"카드의 소유자 타입."},"acquireStatus":{"type":"string","enum":["READY","CANCELED","REQUESTED","COMPLETED","CANCEL_REQUESTED"],"title":"카드 결제의 매입 상태","description":"카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨"},"receiptUrl":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."}},"required":["company","number","installmentPlanMonths","isInterestFree","approveNo","useCardPoint","cardType","ownerType","acquireStatus","receiptUrl"],"description":"카드 정보."},"discount":{"type":"object","properties":{"amount":{"type":"number","title":"카드사의 즉시 할인 프로모션을 적용한 금액","description":"카드사의 즉시 할인 프로모션을 적용한 금액."}},"required":["amount"],"description":"카드사의 즉시 할인 프로모션 정보.","nullable":true,"title":"카드사의 즉시 할인 프로모션 정보"},"easyPay":{"type":"string","enum":["토스결제","페이코","삼성페이"],"nullable":true,"title":"간편결제로 결제한 경우 간편결제 타입 정보","description":"간편결제로 결제한 경우 간편결제 타입 정보."},"method":{"type":"string","enum":["카드"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL","BILLING"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["card","discount","easyPay","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"카드 결제 정보."},{"type":"object","properties":{"giftCertificate":{"type":"object","properties":{"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"settlementStatus":{"type":"string","enum":["COMPLETE","INCOMPLETE"],"title":"정산 상태","description":"정산 상태."}},"required":["approveNo","settlementStatus"],"description":"상품권 정보."},"method":{"type":"string","enum":["상품권"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["giftCertificate","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"상품권 결제 정보."},{"type":"object","properties":{"mobilePhone":{"type":"object","properties":{"carrier":{"type":"string","title":"통신사","description":"통신사."},"customerMobilePhone":{"type":"string","title":"고객 휴대폰 번호","description":"고객 휴대폰 번호."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."}},"required":["carrier","customerMobilePhone","settlementStatus"],"description":"휴대폰 정보."},"method":{"type":"string","enum":["휴대폰"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["mobilePhone","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"휴대폰 결제 정보."},{"type":"object","properties":{"transfer":{"type":"object","properties":{"bank":{"type":"string","title":"은행명","description":"은행명."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"이체 상태","description":"이체 상태."}},"required":["bank","settlementStatus"],"description":"계좌 이체 정보."},"method":{"type":"string","enum":["계좌이체"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["transfer","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"계좌 이체 결제 정보."},{"type":"object","properties":{"secret":{"type":"string","title":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값","description":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값."},"virtualAccount":{"type":"object","properties":{"accountNumber":{"type":"string","title":"계좌 번호","description":"계좌 번호."},"accountType":{"type":"string","enum":["일반","고정"],"title":"가상 계좌 타입","description":"가상 계좌 타입."},"bank":{"type":"string","title":"은행명","description":"은행명."},"customerName":{"type":"string","title":"고객 이름","description":"고객 이름."},"dueDate":{"type":"string","format":"date","title":"입금 기한","description":"입금 기한."},"expired":{"type":"boolean","title":"가상 계좌 만료 여부","description":"가상 계좌 만료 여부."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."},"refundStatus":{"type":"string","enum":["COMPLETED","NONE","FAILED","PENDING","PARTIAL_FAILED"],"title":"환불 처리 상태","description":"환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료"}},"required":["accountNumber","accountType","bank","customerName","dueDate","expired","settlementStatus","refundStatus"],"description":"가상 계좌 정보."},"method":{"type":"string","enum":["가상계좌"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["secret","virtualAccount","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"가상 계좌 결제 정보."}],"description":"결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```"},"description":"가상 계좌에 입금하기.\n\n`internal.virtual_accounts.deposit` 은 실제 토스 페이먼츠의 결제 서버에는 존재하지\n않는 API 로써, 가상 계좌 결제를 신청한 고객이, 이후 가상 계좌에 목표 금액을 입금하는\n상황을 시뮬레이션할 수 있는 함수이다.\n\n즉 `internal.virtual_accounts.deposit` 는 고객이 스스로에게 가상으로 발급된 계좌에\n입금을 하고, 그에 따라 토스 페이먼츠 서버에서 webhook 이벤트가 발생하여 이를 귀하의\n백엔드 서버로 전송하는 일련의 상황을 테스트하기 위한 함수인 셈이다."},{"method":"get","path":"/v1/payments/{paymentKey}","name":"v1_payments_getByPaymentkey","parameters":[{"type":"object","properties":{"paymentKey":{"type":"string","description":" 결제 정보의 {@link ITossPayment.paymentKey}"}}}],"output":{"oneOf":[{"type":"object","properties":{"card":{"type":"object","properties":{"company":{"type":"string","title":"카드사 이름","description":"카드사 이름."},"number":{"type":"string","pattern":"[0-9]{16}","title":"카드 번호","description":"카드 번호."},"installmentPlanMonths":{"type":"number","title":"할부 개월 수","description":"할부 개월 수."},"isInterestFree":{"type":"boolean","title":"무이자 할부 적용 여부","description":"무이자 할부 적용 여부."},"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"useCardPoint":{"type":"boolean","title":"카드 포인트 사용 여부","description":"카드 포인트 사용 여부."},"cardType":{"type":"string","enum":["신용","체크","기프트"],"title":"카드 타입","description":"카드 타입."},"ownerType":{"type":"string","enum":["개인","법인"],"title":"카드의 소유자 타입","description":"카드의 소유자 타입."},"acquireStatus":{"type":"string","enum":["READY","CANCELED","REQUESTED","COMPLETED","CANCEL_REQUESTED"],"title":"카드 결제의 매입 상태","description":"카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨"},"receiptUrl":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."}},"required":["company","number","installmentPlanMonths","isInterestFree","approveNo","useCardPoint","cardType","ownerType","acquireStatus","receiptUrl"],"description":"카드 정보."},"discount":{"type":"object","properties":{"amount":{"type":"number","title":"카드사의 즉시 할인 프로모션을 적용한 금액","description":"카드사의 즉시 할인 프로모션을 적용한 금액."}},"required":["amount"],"description":"카드사의 즉시 할인 프로모션 정보.","nullable":true,"title":"카드사의 즉시 할인 프로모션 정보"},"easyPay":{"type":"string","enum":["토스결제","페이코","삼성페이"],"nullable":true,"title":"간편결제로 결제한 경우 간편결제 타입 정보","description":"간편결제로 결제한 경우 간편결제 타입 정보."},"method":{"type":"string","enum":["카드"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL","BILLING"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["card","discount","easyPay","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"카드 결제 정보."},{"type":"object","properties":{"giftCertificate":{"type":"object","properties":{"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"settlementStatus":{"type":"string","enum":["COMPLETE","INCOMPLETE"],"title":"정산 상태","description":"정산 상태."}},"required":["approveNo","settlementStatus"],"description":"상품권 정보."},"method":{"type":"string","enum":["상품권"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["giftCertificate","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"상품권 결제 정보."},{"type":"object","properties":{"mobilePhone":{"type":"object","properties":{"carrier":{"type":"string","title":"통신사","description":"통신사."},"customerMobilePhone":{"type":"string","title":"고객 휴대폰 번호","description":"고객 휴대폰 번호."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."}},"required":["carrier","customerMobilePhone","settlementStatus"],"description":"휴대폰 정보."},"method":{"type":"string","enum":["휴대폰"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["mobilePhone","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"휴대폰 결제 정보."},{"type":"object","properties":{"transfer":{"type":"object","properties":{"bank":{"type":"string","title":"은행명","description":"은행명."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"이체 상태","description":"이체 상태."}},"required":["bank","settlementStatus"],"description":"계좌 이체 정보."},"method":{"type":"string","enum":["계좌이체"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["transfer","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"계좌 이체 결제 정보."},{"type":"object","properties":{"secret":{"type":"string","title":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값","description":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값."},"virtualAccount":{"type":"object","properties":{"accountNumber":{"type":"string","title":"계좌 번호","description":"계좌 번호."},"accountType":{"type":"string","enum":["일반","고정"],"title":"가상 계좌 타입","description":"가상 계좌 타입."},"bank":{"type":"string","title":"은행명","description":"은행명."},"customerName":{"type":"string","title":"고객 이름","description":"고객 이름."},"dueDate":{"type":"string","format":"date","title":"입금 기한","description":"입금 기한."},"expired":{"type":"boolean","title":"가상 계좌 만료 여부","description":"가상 계좌 만료 여부."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."},"refundStatus":{"type":"string","enum":["COMPLETED","NONE","FAILED","PENDING","PARTIAL_FAILED"],"title":"환불 처리 상태","description":"환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료"}},"required":["accountNumber","accountType","bank","customerName","dueDate","expired","settlementStatus","refundStatus"],"description":"가상 계좌 정보."},"method":{"type":"string","enum":["가상계좌"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["secret","virtualAccount","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"가상 계좌 결제 정보."}],"description":"결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```"},"description":"결제 정보 조회하기.\n\n`payments.at` 은 결제 정보를 조회하는 함수이다.\n\n주로 클라이언트 어플리케이션이 토스 페이먼츠가 자체적으로 제공하는 결제 창을 사용하는\n경우, 그래서 프론트 어플리케이션이 귀하의 백엔드 서버에 `paymentKey` 등 극히 일부의\n식별자 정보만을 전달해주어, 상세 결제 정보가 필요할 때 사용한다.\n\n참고로 토스 페이먼츠는 다른 결제 PG 사들과 다르게, 클라이언트 어플리케이션에서 토스\n페이먼츠의 결제 창을 이용하여 진행한 결제가 바로 확정되는 것은 아니다. 귀사의 백엔드\n서버가 현재의 `payments.at` 을 통하여 해당 결제 정보를 확인하고, {@link approve} 를\n호출하여 직접 승인하기 전까지, 해당 결제는 확정되지 않으니, 이 점에 유의하기 바란다."},{"method":"post","path":"/v1/payments/{paymentKey}","name":"v1_payments_postByPaymentkey","parameters":[{"type":"object","properties":{"paymentKey":{"type":"string","description":" 대상 결제의 {@link ITossPayment.paymentKey}"},"body":{"type":"object","properties":{"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."}},"required":["orderId","amount"],"description":"결제 승인 정보."}}}],"output":{"oneOf":[{"type":"object","properties":{"card":{"type":"object","properties":{"company":{"type":"string","title":"카드사 이름","description":"카드사 이름."},"number":{"type":"string","pattern":"[0-9]{16}","title":"카드 번호","description":"카드 번호."},"installmentPlanMonths":{"type":"number","title":"할부 개월 수","description":"할부 개월 수."},"isInterestFree":{"type":"boolean","title":"무이자 할부 적용 여부","description":"무이자 할부 적용 여부."},"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"useCardPoint":{"type":"boolean","title":"카드 포인트 사용 여부","description":"카드 포인트 사용 여부."},"cardType":{"type":"string","enum":["신용","체크","기프트"],"title":"카드 타입","description":"카드 타입."},"ownerType":{"type":"string","enum":["개인","법인"],"title":"카드의 소유자 타입","description":"카드의 소유자 타입."},"acquireStatus":{"type":"string","enum":["READY","CANCELED","REQUESTED","COMPLETED","CANCEL_REQUESTED"],"title":"카드 결제의 매입 상태","description":"카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨"},"receiptUrl":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."}},"required":["company","number","installmentPlanMonths","isInterestFree","approveNo","useCardPoint","cardType","ownerType","acquireStatus","receiptUrl"],"description":"카드 정보."},"discount":{"type":"object","properties":{"amount":{"type":"number","title":"카드사의 즉시 할인 프로모션을 적용한 금액","description":"카드사의 즉시 할인 프로모션을 적용한 금액."}},"required":["amount"],"description":"카드사의 즉시 할인 프로모션 정보.","nullable":true,"title":"카드사의 즉시 할인 프로모션 정보"},"easyPay":{"type":"string","enum":["토스결제","페이코","삼성페이"],"nullable":true,"title":"간편결제로 결제한 경우 간편결제 타입 정보","description":"간편결제로 결제한 경우 간편결제 타입 정보."},"method":{"type":"string","enum":["카드"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL","BILLING"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["card","discount","easyPay","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"카드 결제 정보."},{"type":"object","properties":{"giftCertificate":{"type":"object","properties":{"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"settlementStatus":{"type":"string","enum":["COMPLETE","INCOMPLETE"],"title":"정산 상태","description":"정산 상태."}},"required":["approveNo","settlementStatus"],"description":"상품권 정보."},"method":{"type":"string","enum":["상품권"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["giftCertificate","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"상품권 결제 정보."},{"type":"object","properties":{"mobilePhone":{"type":"object","properties":{"carrier":{"type":"string","title":"통신사","description":"통신사."},"customerMobilePhone":{"type":"string","title":"고객 휴대폰 번호","description":"고객 휴대폰 번호."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."}},"required":["carrier","customerMobilePhone","settlementStatus"],"description":"휴대폰 정보."},"method":{"type":"string","enum":["휴대폰"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["mobilePhone","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"휴대폰 결제 정보."},{"type":"object","properties":{"transfer":{"type":"object","properties":{"bank":{"type":"string","title":"은행명","description":"은행명."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"이체 상태","description":"이체 상태."}},"required":["bank","settlementStatus"],"description":"계좌 이체 정보."},"method":{"type":"string","enum":["계좌이체"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["transfer","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"계좌 이체 결제 정보."},{"type":"object","properties":{"secret":{"type":"string","title":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값","description":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값."},"virtualAccount":{"type":"object","properties":{"accountNumber":{"type":"string","title":"계좌 번호","description":"계좌 번호."},"accountType":{"type":"string","enum":["일반","고정"],"title":"가상 계좌 타입","description":"가상 계좌 타입."},"bank":{"type":"string","title":"은행명","description":"은행명."},"customerName":{"type":"string","title":"고객 이름","description":"고객 이름."},"dueDate":{"type":"string","format":"date","title":"입금 기한","description":"입금 기한."},"expired":{"type":"boolean","title":"가상 계좌 만료 여부","description":"가상 계좌 만료 여부."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."},"refundStatus":{"type":"string","enum":["COMPLETED","NONE","FAILED","PENDING","PARTIAL_FAILED"],"title":"환불 처리 상태","description":"환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료"}},"required":["accountNumber","accountType","bank","customerName","dueDate","expired","settlementStatus","refundStatus"],"description":"가상 계좌 정보."},"method":{"type":"string","enum":["가상계좌"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["secret","virtualAccount","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"가상 계좌 결제 정보."}],"description":"결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```"},"description":"결제 승인하기.\n\n토스 페이먼츠는 귀사의 백엔드에서 일어난 결제가 아닌 프론트 어플리케이션의 결제 창에서\n이루어진 결제의 경우, 해당 서비스으 백엔드 서버로부터 결제를 승인받기 전까지, 이를\n확정하지 않는다. `payments.approve` 는 바로 이러한 상황에서, 해당 결제를 승인해주는\n함수이다.\n\n만일 귀하가 `fake-toss-payments-server` 를 이용하여 결제를 시뮬레이션하는 경우라면,\n결제 관련 API 를 호출함에 있어 {@link ITossCardPayment.ICreate.__approved} 내지\n{@link ITossVirtualAccountPayment.ICreate.__approved} 를 `false` 로 함으로써, 별도\n승인이 필요한 이러한 상황을 시뮬레이션 할 수 있다."},{"method":"post","path":"/v1/payments/key-in","name":"v1_payments_key_in_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"method":{"type":"string","enum":["card"],"title":"결제 수단이 신용 카드임을 의미","description":"결제 수단이 신용 카드임을 의미."},"cardNumber":{"type":"string","pattern":"[0-9]{16}","title":"카드 번호","description":"카드 번호."},"cardExpirationYear":{"type":"string","pattern":"\\d{2}","title":"카드 만료 년도 (2 자리)","description":"카드 만료 년도 (2 자리)."},"cardExpirationMonth":{"type":"string","pattern":"^(0[1-9]|1[012])$","title":"카드 만료 월 (2 자리)","description":"카드 만료 월 (2 자리)."},"cardPassword":{"type":"string","title":"카드 비밀번호","description":"카드 비밀번호."},"cardInstallmentPlan":{"type":"number","title":"할부 개월 수","description":"할부 개월 수."},"amount":{"type":"number","title":"지불 총액","description":"지불 총액."},"taxFreeAmount":{"type":"number","title":"면세금 총액","description":"면세금 총액."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"customerBirthday":{"type":"string","pattern":"^([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$","title":"고객의 생년월일","description":"고객의 생년월일.\n\n표기 형식 YYMMDD."},"customerEmail":{"type":"string","format":"email","title":"고객의 이메일","description":"고객의 이메일."},"vbv":{"type":"object","properties":{"cavv":{"type":"string","title":"3D Secure 인증 세션에 대한 인증 값","description":"3D Secure 인증 세션에 대한 인증 값."},"xid":{"type":"string","title":"트랜잭션 ID","description":"트랜잭션 ID."},"eci":{"type":"string","title":"3DS 인증 결과에 대한 코드 값","description":"3DS 인증 결과에 대한 코드 값."}},"required":["cavv","xid","eci"],"title":"해외카드로 결제하는 경우 3DS 인증 적용을 위해 사용","description":"해외카드로 결제하는 경우 3DS 인증 적용을 위해 사용.\n\n3DS 인증 결과를 전송해야 하는 경우에만 필수."},"__approved":{"type":"boolean","title":"결제 승인 여부","description":"결제 승인 여부.\n\n오직 가짜 페이먼츠 서버 `fake-toss-payments-server` 에서만 사용되는 값으로써,\n결제 승인을 고의로 지연시키거나 할 때 사용된다. 이 값을 `false` 로 하면, 프론트\n어플리케이션이 토스 페이먼츠가 제공해주는 결제 창을 사용하여 결제를 진행하는\n상황을 시뮬레이션할 수 있다.\n\n본디 토스 페이먼츠 서버는 프론트 어플리케이션에서 백엔드 서버를 거치지 않고,\n토스 페이먼츠가 제공해주는 결제 창을 이용하여 직접 결제를 요청하는 경우,\n백엔드에서 이를 별도 {@link functional.payments.approve 승인} 처리해주기 전까지\n정식 결제로 인청치 아니한다.\n\n반면 백엔드 서버에서 토스 페이먼츠 서버의 API 를 호출하는 경우, 토스 페이먼츠는\n이를 그 즉시로 승인해주기, `fake-toss-payments-server` 에서 별도의 승인 처리가\n필요한 상황을 시뮬레이션하기 위해서는 이러한 속성이 필요한 것."}},"required":["method","cardNumber","cardExpirationYear","cardExpirationMonth","amount","orderId"],"description":"신용 카드를 이용한 결제 신청 정보."}}}],"output":{"type":"object","properties":{"card":{"type":"object","properties":{"company":{"type":"string","title":"카드사 이름","description":"카드사 이름."},"number":{"type":"string","pattern":"[0-9]{16}","title":"카드 번호","description":"카드 번호."},"installmentPlanMonths":{"type":"number","title":"할부 개월 수","description":"할부 개월 수."},"isInterestFree":{"type":"boolean","title":"무이자 할부 적용 여부","description":"무이자 할부 적용 여부."},"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"useCardPoint":{"type":"boolean","title":"카드 포인트 사용 여부","description":"카드 포인트 사용 여부."},"cardType":{"type":"string","enum":["신용","체크","기프트"],"title":"카드 타입","description":"카드 타입."},"ownerType":{"type":"string","enum":["개인","법인"],"title":"카드의 소유자 타입","description":"카드의 소유자 타입."},"acquireStatus":{"type":"string","enum":["READY","CANCELED","REQUESTED","COMPLETED","CANCEL_REQUESTED"],"title":"카드 결제의 매입 상태","description":"카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨"},"receiptUrl":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."}},"required":["company","number","installmentPlanMonths","isInterestFree","approveNo","useCardPoint","cardType","ownerType","acquireStatus","receiptUrl"],"description":"카드 정보."},"discount":{"type":"object","properties":{"amount":{"type":"number","title":"카드사의 즉시 할인 프로모션을 적용한 금액","description":"카드사의 즉시 할인 프로모션을 적용한 금액."}},"required":["amount"],"description":"카드사의 즉시 할인 프로모션 정보.","nullable":true,"title":"카드사의 즉시 할인 프로모션 정보"},"easyPay":{"type":"string","enum":["토스결제","페이코","삼성페이"],"nullable":true,"title":"간편결제로 결제한 경우 간편결제 타입 정보","description":"간편결제로 결제한 경우 간편결제 타입 정보."},"method":{"type":"string","enum":["카드"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL","BILLING"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["card","discount","easyPay","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"카드 결제 정보."},"description":"카드로 결제하기.\n\n`payments.key_in` 은 카드를 이용한 결제를 할 때 호출되는 API 함수이다.\n\n참고로 `payments.key_in` 는 클라이언트 어플리케이션이 토스 페이먼츠가 자체적으로\n제공하는 결제 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는\n일은 없을 것이다. 다만, 고객이 카드를 통하여 결제하는 상황을 시뮬레이션하기 위하여,\n테스트 자동화 프로그램 수준에서 사용될 수는 있다.\n\n그리고 귀하의 백엔드 서버가 `payments.key-in` 을 직접 호출하는 경우, 토스 페이먼츠\n서버는 이를 완전히 승인된 결제로 보고 바로 확정한다. 때문에 `payments.key-in` 을\n직접 호출하는 경우, 토스 페이먼츠의 결제 창을 이용하여 별도의 {@link approve} 가\n필요한 때 대비, 훨씬 더 세심한 주의가 요구된다.\n\n더하여 만약 귀하의 백엔드 서버가 `fake-toss-payments-server` 를 이용하여 고객의\n카드 결제를 시뮬레이션하는 경우, {@link ITossCardPayment.ICreate.__approved} 값을\n`false` 로 하여 카드 결제의 확정을 고의로 회피할 수 있다. 이를 통하여 토스\n페이먼츠의 결제 창을 이용한 카드 결제의 경우, 별도의 {@link approve} 가 필요한\n상황을 시뮬레이션 할 수 있다."},{"method":"post","path":"/v1/payments/{paymentKey}/cancel","name":"v1_payments_cancel_postByPaymentkey","parameters":[{"type":"object","properties":{"paymentKey":{"type":"string","description":" 결제 정보의 {@link ITossPayment.paymentKey}"},"body":{"type":"object","properties":{"paymentKey":{"type":"string","title":"{@link ITossPayment} 의 식별자 키","description":"{@link ITossPayment} 의 식별자 키."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"refundReceiveAccount":{"type":"object","properties":{"bank":{"type":"string","title":"은행 정보","description":"은행 정보."},"accountNumber":{"type":"string","pattern":"^[0-9]{0,20}$","title":"계좌 번호","description":"계좌 번호."},"holderName":{"type":"string","title":"예금주","description":"예금주."}},"required":["bank","accountNumber","holderName"],"title":"환불 계좌 정보","description":"환불 계좌 정보.\n\n결제를 가상 계좌로 하였을 때에만 해당함."},"taxAmount":{"type":"number","title":"과세 처리 금액","description":"과세 처리 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리 금액","description":"면세 처리 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."}},"required":["paymentKey","cancelReason"],"description":"결제 취소 신청 정보."}}}],"output":{"oneOf":[{"type":"object","properties":{"card":{"type":"object","properties":{"company":{"type":"string","title":"카드사 이름","description":"카드사 이름."},"number":{"type":"string","pattern":"[0-9]{16}","title":"카드 번호","description":"카드 번호."},"installmentPlanMonths":{"type":"number","title":"할부 개월 수","description":"할부 개월 수."},"isInterestFree":{"type":"boolean","title":"무이자 할부 적용 여부","description":"무이자 할부 적용 여부."},"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"useCardPoint":{"type":"boolean","title":"카드 포인트 사용 여부","description":"카드 포인트 사용 여부."},"cardType":{"type":"string","enum":["신용","체크","기프트"],"title":"카드 타입","description":"카드 타입."},"ownerType":{"type":"string","enum":["개인","법인"],"title":"카드의 소유자 타입","description":"카드의 소유자 타입."},"acquireStatus":{"type":"string","enum":["READY","CANCELED","REQUESTED","COMPLETED","CANCEL_REQUESTED"],"title":"카드 결제의 매입 상태","description":"카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨"},"receiptUrl":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."}},"required":["company","number","installmentPlanMonths","isInterestFree","approveNo","useCardPoint","cardType","ownerType","acquireStatus","receiptUrl"],"description":"카드 정보."},"discount":{"type":"object","properties":{"amount":{"type":"number","title":"카드사의 즉시 할인 프로모션을 적용한 금액","description":"카드사의 즉시 할인 프로모션을 적용한 금액."}},"required":["amount"],"description":"카드사의 즉시 할인 프로모션 정보.","nullable":true,"title":"카드사의 즉시 할인 프로모션 정보"},"easyPay":{"type":"string","enum":["토스결제","페이코","삼성페이"],"nullable":true,"title":"간편결제로 결제한 경우 간편결제 타입 정보","description":"간편결제로 결제한 경우 간편결제 타입 정보."},"method":{"type":"string","enum":["카드"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL","BILLING"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["card","discount","easyPay","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"카드 결제 정보."},{"type":"object","properties":{"giftCertificate":{"type":"object","properties":{"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"settlementStatus":{"type":"string","enum":["COMPLETE","INCOMPLETE"],"title":"정산 상태","description":"정산 상태."}},"required":["approveNo","settlementStatus"],"description":"상품권 정보."},"method":{"type":"string","enum":["상품권"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["giftCertificate","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"상품권 결제 정보."},{"type":"object","properties":{"mobilePhone":{"type":"object","properties":{"carrier":{"type":"string","title":"통신사","description":"통신사."},"customerMobilePhone":{"type":"string","title":"고객 휴대폰 번호","description":"고객 휴대폰 번호."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."}},"required":["carrier","customerMobilePhone","settlementStatus"],"description":"휴대폰 정보."},"method":{"type":"string","enum":["휴대폰"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["mobilePhone","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"휴대폰 결제 정보."},{"type":"object","properties":{"transfer":{"type":"object","properties":{"bank":{"type":"string","title":"은행명","description":"은행명."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"이체 상태","description":"이체 상태."}},"required":["bank","settlementStatus"],"description":"계좌 이체 정보."},"method":{"type":"string","enum":["계좌이체"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["transfer","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"계좌 이체 결제 정보."},{"type":"object","properties":{"secret":{"type":"string","title":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값","description":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값."},"virtualAccount":{"type":"object","properties":{"accountNumber":{"type":"string","title":"계좌 번호","description":"계좌 번호."},"accountType":{"type":"string","enum":["일반","고정"],"title":"가상 계좌 타입","description":"가상 계좌 타입."},"bank":{"type":"string","title":"은행명","description":"은행명."},"customerName":{"type":"string","title":"고객 이름","description":"고객 이름."},"dueDate":{"type":"string","format":"date","title":"입금 기한","description":"입금 기한."},"expired":{"type":"boolean","title":"가상 계좌 만료 여부","description":"가상 계좌 만료 여부."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."},"refundStatus":{"type":"string","enum":["COMPLETED","NONE","FAILED","PENDING","PARTIAL_FAILED"],"title":"환불 처리 상태","description":"환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료"}},"required":["accountNumber","accountType","bank","customerName","dueDate","expired","settlementStatus","refundStatus"],"description":"가상 계좌 정보."},"method":{"type":"string","enum":["가상계좌"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["secret","virtualAccount","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"가상 계좌 결제 정보."}],"description":"결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```"},"description":"결제 취소하기.\n\n`payments.cancel` 은 결제를 취소하는 API 이다.\n\n결제 취소 입력 정보 {@link ITossPaymentCancel.ICreate} 에는 취소 사유를 비롯하여,\n고객에게 환불해 줄 금액과 부가세 및 필요시 환불 계좌 정보 등을 입력하게 되어있다."},{"method":"post","path":"/v1/virtual-accounts","name":"v1_virtual_accounts_post","parameters":[{"type":"object","properties":{"body":{"type":"object","properties":{"method":{"type":"string","enum":["virtual-account"],"title":"결제 수단이 가상 계좌임을 의미","description":"결제 수단이 가상 계좌임을 의미."},"orderId":{"type":"string","title":"주문 식별자 번호","description":"주문 식별자 번호.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"bank":{"type":"string","title":"은행명","description":"은행명."},"customerName":{"type":"string","title":"고객 이름","description":"고객 이름."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"__approved":{"type":"boolean","title":"결제 승인 여부","description":"결제 승인 여부.\n\n오직 가짜 페이먼츠 서버 `fake-toss-payments-server` 에서만 사용되는 값으로써,\n결제 승인을 고의로 지연시키거나 할 때 사용된다. 이 값을 `false` 로 하면, 프론트\n어플리케이션이 토스 페이먼츠가 제공해주는 결제 창을 사용하여 결제를 진행하는\n상황을 시뮬레이션할 수 있다.\n\n본디 토스 페이먼츠 서버는 프론트 어플리케이션에서 백엔드 서버를 거치지 않고,\n토스 페이먼츠가 제공해주는 결제 창을 이용하여 직접 결제를 요청하는 경우,\n백엔드에서 이를 별도 {@link functional.payments.approve 승인} 처리해주기 전까지\n정식 결제로 인청치 아니한다.\n\n반면 백엔드 서버에서 토스 페이먼츠 서버의 API 를 호출하는 경우, 토스 페이먼츠는\n이를 그 즉시로 승인해주기, `fake-toss-payments-server` 에서 별도의 승인 처리가\n필요한 상황을 시뮬레이션하기 위해서는 이러한 속성이 필요한 것."}},"required":["method","orderId","orderName","bank","customerName","amount"],"description":"가상 계좌를 이용한 결제 신청 정보."}}}],"output":{"type":"object","properties":{"secret":{"type":"string","title":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값","description":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값."},"virtualAccount":{"type":"object","properties":{"accountNumber":{"type":"string","title":"계좌 번호","description":"계좌 번호."},"accountType":{"type":"string","enum":["일반","고정"],"title":"가상 계좌 타입","description":"가상 계좌 타입."},"bank":{"type":"string","title":"은행명","description":"은행명."},"customerName":{"type":"string","title":"고객 이름","description":"고객 이름."},"dueDate":{"type":"string","format":"date","title":"입금 기한","description":"입금 기한."},"expired":{"type":"boolean","title":"가상 계좌 만료 여부","description":"가상 계좌 만료 여부."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."},"refundStatus":{"type":"string","enum":["COMPLETED","NONE","FAILED","PENDING","PARTIAL_FAILED"],"title":"환불 처리 상태","description":"환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료"}},"required":["accountNumber","accountType","bank","customerName","dueDate","expired","settlementStatus","refundStatus"],"description":"가상 계좌 정보."},"method":{"type":"string","enum":["가상계좌"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["secret","virtualAccount","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"가상 계좌 결제 정보."},"description":"가상 계좌로 결제 신청하기.\n\n`virtual_accounts.create` 는 고객이 결제 수단을 가상 계좌로 선택하는 경우에 호출되는\nAPI 함수이다. 물론 고객이 이처럼 가상 계좌를 선택한 경우, 고객이 지정된 계좌에 돈을\n입금하기 전까지는 결제가 마무리된 것이 아니기에, {@link ITossPayment.status} 값은\n`WAITING_FOR_DEPOSIT` 이 된다.\n\n참고로 `virtual_accounts.create` 는 클라이언트 어플리케이션이 토스 페이먼츠가\n자체적으로 제공하는 결제 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서\n호출하는 일은 없을 것이다. 다만, 고객이 가상 계좌로 결제를 진행하는 상황을\n시뮬레이션하기 위하여, 테스트 자동화 프로그램 수준에서 사용될 수는 있다.\n\n그리고 `virtual_accounts.create` 이후에 고객이 지정된 계좌에 금액을 입금하거든, 토스\n페이먼츠 서버로부터 웹훅 이벤트가 발생되어 귀하의 백엔드 서버로 전송된다. 만약 연동\n대상 토스 페이먼츠 서버가 실제가 아닌 `fake-toss-payments-server` 라면,\n{@link internal.virtual_accounts.deposit} 를 호출하여, 고객이 가상 계좌에 입금하는\n상황을 시뮬레이션 할 수 있다."}],"errors":[],"options":{"keyword":true,"separate":null}} \ No newline at end of file diff --git a/examples/keyword/uber.json b/examples/keyword/uber.json index bcf28a2..8a7c1cc 100644 --- a/examples/keyword/uber.json +++ b/examples/keyword/uber.json @@ -1,219 +1 @@ -{ - "openapi": "3.0.3", - "functions": [ - { - "method": "get", - "path": "/products", - "name": "products_get", - "parameters": [ - { - "type": "object", - "properties": { - "query": { - "type": "object", - "properties": { - "latitude": { - "name": "latitude", - "in": "query", - "description": "Latitude component of location.", - "required": true, - "type": "number", - "format": "double" - }, - "longitude": { - "name": "longitude", - "in": "query", - "description": "Longitude component of location.", - "required": true, - "type": "number", - "format": "double" - } - }, - "required": [ - "latitude", - "longitude" - ] - } - } - } - ], - "output": { - "type": "array", - "items": {} - }, - "description": "Product Types.\n\nThe Products endpoint returns information about the Uber products offered at a given location. The response includes the display name and other details about each product, and lists the products in the proper display order." - }, - { - "method": "get", - "path": "/estimates/price", - "name": "estimates_price_get", - "parameters": [ - { - "type": "object", - "properties": { - "query": { - "type": "object", - "properties": { - "start_latitude": { - "name": "start_latitude", - "in": "query", - "description": "Latitude component of start location.", - "required": true, - "type": "number", - "format": "double" - }, - "start_longitude": { - "name": "start_longitude", - "in": "query", - "description": "Longitude component of start location.", - "required": true, - "type": "number", - "format": "double" - }, - "end_latitude": { - "name": "end_latitude", - "in": "query", - "description": "Latitude component of end location.", - "required": true, - "type": "number", - "format": "double" - }, - "end_longitude": { - "name": "end_longitude", - "in": "query", - "description": "Longitude component of end location.", - "required": true, - "type": "number", - "format": "double" - } - }, - "required": [ - "start_latitude", - "start_longitude", - "end_latitude", - "end_longitude" - ] - } - } - } - ], - "output": { - "type": "array", - "items": {} - }, - "description": "Price Estimates.\n\nThe Price Estimates endpoint returns an estimated price range for each product offered at a given location. The price estimate is provided as a formatted string with the full price range and the localized currency symbol.

The response also includes low and high estimates, and the [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217) currency code for situations requiring currency conversion. When surge is active for a particular product, its surge_multiplier will be greater than 1, but the price estimate already factors in this multiplier." - }, - { - "method": "get", - "path": "/estimates/time", - "name": "estimates_time_get", - "parameters": [ - { - "type": "object", - "properties": { - "query": { - "type": "object", - "properties": { - "start_latitude": { - "name": "start_latitude", - "in": "query", - "description": "Latitude component of start location.", - "required": true, - "type": "number", - "format": "double" - }, - "start_longitude": { - "name": "start_longitude", - "in": "query", - "description": "Longitude component of start location.", - "required": true, - "type": "number", - "format": "double" - }, - "customer_uuid": { - "name": "customer_uuid", - "in": "query", - "type": "string", - "format": "uuid", - "description": "Unique customer identifier to be used for experience customization." - }, - "product_id": { - "name": "product_id", - "in": "query", - "type": "string", - "description": "Unique identifier representing a specific product for a given latitude & longitude." - } - }, - "required": [ - "start_latitude", - "start_longitude", - "customer_uuid", - "product_id" - ] - } - } - } - ], - "output": { - "type": "array", - "items": {} - }, - "description": "Time Estimates.\n\nThe Time Estimates endpoint returns ETAs for all products offered at a given location, with the responses expressed as integers in seconds. We recommend that this endpoint be called every minute to provide the most accurate, up-to-date ETAs." - }, - { - "method": "get", - "path": "/me", - "name": "me_get", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": {}, - "description": "User Profile.\n\nThe User Profile endpoint returns information about the Uber user that has authorized with the application." - }, - { - "method": "get", - "path": "/history", - "name": "history_get", - "parameters": [ - { - "type": "object", - "properties": { - "query": { - "type": "object", - "properties": { - "offset": { - "name": "offset", - "in": "query", - "type": "integer", - "format": "int32", - "description": "Offset the list of returned results by this amount. Default is zero." - }, - "limit": { - "name": "limit", - "in": "query", - "type": "integer", - "format": "int32", - "description": "Number of items to retrieve. Default is 5, maximum is 100." - } - }, - "required": [ - "offset", - "limit" - ] - } - } - } - ], - "output": {}, - "description": "User Activity.\n\nThe User Activity endpoint returns data about a user's lifetime activity with Uber. The response will include pickup locations and times, dropoff locations and times, the distance of past requests, and information about which products were requested.

The history array in the response will have a maximum length based on the limit parameter. The response value count may exceed limit, therefore subsequent API requests may be necessary." - } - ], - "errors": [], - "options": { - "keyword": true, - "separate": null - } -} \ No newline at end of file +{"openapi":"3.0.3","functions":[{"method":"get","path":"/products","name":"products_get","parameters":[{"type":"object","properties":{"query":{"type":"object","properties":{"latitude":{"name":"latitude","in":"query","description":"Latitude component of location.","required":true,"type":"number","format":"double"},"longitude":{"name":"longitude","in":"query","description":"Longitude component of location.","required":true,"type":"number","format":"double"}},"required":["latitude","longitude"]}}}],"output":{"type":"array","items":{}},"description":"Product Types.\n\nThe Products endpoint returns information about the Uber products offered at a given location. The response includes the display name and other details about each product, and lists the products in the proper display order."},{"method":"get","path":"/estimates/price","name":"estimates_price_get","parameters":[{"type":"object","properties":{"query":{"type":"object","properties":{"start_latitude":{"name":"start_latitude","in":"query","description":"Latitude component of start location.","required":true,"type":"number","format":"double"},"start_longitude":{"name":"start_longitude","in":"query","description":"Longitude component of start location.","required":true,"type":"number","format":"double"},"end_latitude":{"name":"end_latitude","in":"query","description":"Latitude component of end location.","required":true,"type":"number","format":"double"},"end_longitude":{"name":"end_longitude","in":"query","description":"Longitude component of end location.","required":true,"type":"number","format":"double"}},"required":["start_latitude","start_longitude","end_latitude","end_longitude"]}}}],"output":{"type":"array","items":{}},"description":"Price Estimates.\n\nThe Price Estimates endpoint returns an estimated price range for each product offered at a given location. The price estimate is provided as a formatted string with the full price range and the localized currency symbol.

The response also includes low and high estimates, and the [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217) currency code for situations requiring currency conversion. When surge is active for a particular product, its surge_multiplier will be greater than 1, but the price estimate already factors in this multiplier."},{"method":"get","path":"/estimates/time","name":"estimates_time_get","parameters":[{"type":"object","properties":{"query":{"type":"object","properties":{"start_latitude":{"name":"start_latitude","in":"query","description":"Latitude component of start location.","required":true,"type":"number","format":"double"},"start_longitude":{"name":"start_longitude","in":"query","description":"Longitude component of start location.","required":true,"type":"number","format":"double"},"customer_uuid":{"name":"customer_uuid","in":"query","type":"string","format":"uuid","description":"Unique customer identifier to be used for experience customization."},"product_id":{"name":"product_id","in":"query","type":"string","description":"Unique identifier representing a specific product for a given latitude & longitude."}},"required":["start_latitude","start_longitude","customer_uuid","product_id"]}}}],"output":{"type":"array","items":{}},"description":"Time Estimates.\n\nThe Time Estimates endpoint returns ETAs for all products offered at a given location, with the responses expressed as integers in seconds. We recommend that this endpoint be called every minute to provide the most accurate, up-to-date ETAs."},{"method":"get","path":"/me","name":"me_get","parameters":[{"type":"object","properties":{}}],"output":{},"description":"User Profile.\n\nThe User Profile endpoint returns information about the Uber user that has authorized with the application."},{"method":"get","path":"/history","name":"history_get","parameters":[{"type":"object","properties":{"query":{"type":"object","properties":{"offset":{"name":"offset","in":"query","type":"integer","format":"int32","description":"Offset the list of returned results by this amount. Default is zero."},"limit":{"name":"limit","in":"query","type":"integer","format":"int32","description":"Number of items to retrieve. Default is 5, maximum is 100."}},"required":["offset","limit"]}}}],"output":{},"description":"User Activity.\n\nThe User Activity endpoint returns data about a user's lifetime activity with Uber. The response will include pickup locations and times, dropoff locations and times, the distance of past requests, and information about which products were requested.

The history array in the response will have a maximum length based on the limit parameter. The response value count may exceed limit, therefore subsequent API requests may be necessary."}],"errors":[],"options":{"keyword":true,"separate":null}} \ No newline at end of file diff --git a/examples/positional/bbs.json b/examples/positional/bbs.json index 4412b88..af27f58 100644 --- a/examples/positional/bbs.json +++ b/examples/positional/bbs.json @@ -1,1990 +1 @@ -{ - "openapi": "3.0.3", - "functions": [ - { - "method": "post", - "path": "/bbs/articles", - "name": "bbs_articles_post", - "parameters": [ - { - "type": "object", - "properties": { - "writer": { - "type": "string" - }, - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - }, - "password": { - "type": "string", - "title": "Password for modification", - "description": "Password for modification." - } - }, - "required": [ - "writer", - "format", - "title", - "body", - "files", - "password" - ], - "description": "Store content type of the article." - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "writer": { - "type": "string", - "title": "Writer of article", - "description": "Writer of article." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files", - "title" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "id", - "writer", - "snapshots", - "created_at" - ], - "description": "Article entity.\n\n`IBbsArticle* is a super-type entity of all kinds of articles in the current\nbackend system, literally shaping individual articles of the bulletin board.\n\nAnd, as you can see, the elements that must inevitably exist in the article,\nsuch as the `title` or the `body`, do not exist in the `IBbsArticle`, but exist\nin the subsidiary entity, {@link IBbsArticle.ISnapshot }, as a 1: N relationship,\nwhich is because a new snapshot record is published every time the article is\nmodified.\n\nThe reason why a new snapshot record is published every time the article is\nmodified is to preserve the evidence. Due to the nature of e-community, there\nis always a threat of dispute among the participants. And it can happen that\ndisputes arise through articles or {@link IBbsArticleComment comments}, and to\nprevent such things as modifying existing articles to manipulate the situation,\nthe article is designed in this structure.\n\nIn other words, to keep evidence, and prevent fraud." - }, - "description": "Create a new article.\n\nCreate a new article with its first {@link IBbsArticle.ISnapshot snapshot}." - }, - { - "method": "patch", - "path": "/bbs/articles", - "name": "bbs_articles_patch", - "parameters": [ - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "writer": { - "type": "string" - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - } - }, - "description": "검색 정보." - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-writer", - "-title", - "-created_at", - "-updated_at", - "+writer", - "+title", - "+created_at", - "+updated_at" - ] - }, - "title": "Sort condition", - "description": "Sort condition." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "writer": { - "type": "string", - "title": "Writer of the article", - "description": "Writer of the article." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "id", - "writer", - "title", - "created_at", - "updated_at" - ], - "description": "Summarized information of the article." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up all summarized articles.\n\nList up all summarized articles with pagination and searching options." - }, - { - "method": "patch", - "path": "/bbs/articles/abridges", - "name": "bbs_articles_abridges_patch", - "parameters": [ - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "writer": { - "type": "string" - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - } - }, - "description": "검색 정보." - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-writer", - "-title", - "-created_at", - "-updated_at", - "+writer", - "+title", - "+created_at", - "+updated_at" - ] - }, - "title": "Sort condition", - "description": "Sort condition." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "writer": { - "type": "string", - "title": "Writer of the article", - "description": "Writer of the article." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "writer", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "description": "Abriged information of the article." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up all abridged articles.\n\nList up all abridged articles with pagination and searching options." - }, - { - "method": "get", - "path": "/bbs/articles/{id}", - "name": "bbs_articles_getById", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target article's " - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "writer": { - "type": "string", - "title": "Writer of article", - "description": "Writer of article." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files", - "title" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "id", - "writer", - "snapshots", - "created_at" - ], - "description": "Article entity.\n\n`IBbsArticle* is a super-type entity of all kinds of articles in the current\nbackend system, literally shaping individual articles of the bulletin board.\n\nAnd, as you can see, the elements that must inevitably exist in the article,\nsuch as the `title` or the `body`, do not exist in the `IBbsArticle`, but exist\nin the subsidiary entity, {@link IBbsArticle.ISnapshot }, as a 1: N relationship,\nwhich is because a new snapshot record is published every time the article is\nmodified.\n\nThe reason why a new snapshot record is published every time the article is\nmodified is to preserve the evidence. Due to the nature of e-community, there\nis always a threat of dispute among the participants. And it can happen that\ndisputes arise through articles or {@link IBbsArticleComment comments}, and to\nprevent such things as modifying existing articles to manipulate the situation,\nthe article is designed in this structure.\n\nIn other words, to keep evidence, and prevent fraud." - }, - "description": "Read individual article.\n\nReads an article with its every {@link IBbsArticle.ISnapshot snapshots}." - }, - { - "method": "put", - "path": "/bbs/articles/{id}", - "name": "bbs_articles_putById", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target article's " - }, - { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - }, - "password": { - "type": "string", - "title": "Password for modification", - "description": "Password for modification." - } - }, - "required": [ - "format", - "title", - "body", - "files", - "password" - ] - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files", - "title" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "description": "Update an article.\n\nAccumulate a new {@link IBbsArticle.ISnapshot snapshot} record to the article." - }, - { - "method": "delete", - "path": "/bbs/articles/{id}", - "name": "bbs_articles_eraseById", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target article's " - }, - { - "type": "object", - "properties": { - "password": { - "type": "string" - } - }, - "required": [ - "password" - ] - } - ], - "description": "Erase an article.\n\nPerforms soft deletion to the article." - }, - { - "method": "post", - "path": "/bbs/articles/{articleId}/comments", - "name": "bbs_articles_comments_postByArticleid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged article's " - }, - { - "type": "object", - "properties": { - "writer": { - "type": "string", - "title": "Writer of comment", - "description": "Writer of comment." - }, - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - }, - "password": { - "type": "string", - "title": "Password for modification", - "description": "Password for modification." - } - }, - "required": [ - "writer", - "format", - "body", - "files", - "password" - ] - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "writer": { - "type": "string", - "title": "Writer of comment", - "description": "Writer of comment." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "id", - "parent_id", - "writer", - "snapshots", - "created_at" - ], - "description": "Comment written on an article.\n\n`IBbsArticleComment` is an entity that shapes the comments written on an article.\n\nAnd for this comment, as in the previous relationship between\n{@link IBbsArticle } and {@link IBbsArticle.ISnapshot }, the content body of the\ncomment is stored in the sub {@link IBbsArticleComment.ISnapshot } table for\nevidentialism, and a new snapshot record is issued every time the comment is modified.\n\nAlso, `IBbsArticleComment` is expressing the relationship of the hierarchical reply\nstructure through the {@link IBbsArticleComment.parent_id } attribute." - }, - "description": "Create a new comment.\n\nCreate a new comment with its first {@link IBbsArticleComment.ISnapshot snapshot}." - }, - { - "method": "patch", - "path": "/bbs/articles/{articleId}/comments", - "name": "bbs_articles_comments_patchByArticleid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "" - }, - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "writer": { - "type": "string" - }, - "body": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-writer", - "-created_at", - "+writer", - "+created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "writer": { - "type": "string", - "title": "Writer of comment", - "description": "Writer of comment." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "id", - "parent_id", - "writer", - "snapshots", - "created_at" - ], - "description": "Comment written on an article.\n\n`IBbsArticleComment` is an entity that shapes the comments written on an article.\n\nAnd for this comment, as in the previous relationship between\n{@link IBbsArticle } and {@link IBbsArticle.ISnapshot }, the content body of the\ncomment is stored in the sub {@link IBbsArticleComment.ISnapshot } table for\nevidentialism, and a new snapshot record is issued every time the comment is modified.\n\nAlso, `IBbsArticleComment` is expressing the relationship of the hierarchical reply\nstructure through the {@link IBbsArticleComment.parent_id } attribute." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up all summarized comments.\n\nList up all summarized comments with pagination and searching options." - }, - { - "method": "get", - "path": "/bbs/articles/{articleId}/comments/{id}", - "name": "bbs_articles_comments_getByArticleidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged article's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target comment's " - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "writer": { - "type": "string", - "title": "Writer of comment", - "description": "Writer of comment." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "id", - "parent_id", - "writer", - "snapshots", - "created_at" - ], - "description": "Comment written on an article.\n\n`IBbsArticleComment` is an entity that shapes the comments written on an article.\n\nAnd for this comment, as in the previous relationship between\n{@link IBbsArticle } and {@link IBbsArticle.ISnapshot }, the content body of the\ncomment is stored in the sub {@link IBbsArticleComment.ISnapshot } table for\nevidentialism, and a new snapshot record is issued every time the comment is modified.\n\nAlso, `IBbsArticleComment` is expressing the relationship of the hierarchical reply\nstructure through the {@link IBbsArticleComment.parent_id } attribute." - }, - "description": "Read individual comment.\n\nReads a comment with its every {@link IBbsArticleComment.ISnapshot snapshots}." - }, - { - "method": "put", - "path": "/bbs/articles/{articleId}/comments/{id}", - "name": "bbs_articles_comments_putByArticleidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged article's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target comment's " - }, - { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - }, - "password": { - "type": "string", - "title": "Password for modification", - "description": "Password for modification." - } - }, - "required": [ - "format", - "body", - "files", - "password" - ] - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "txt", - "md", - "html" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "description": "Update a comment.\n\nAccumulate a new {@link IBbsArticleComment.ISnapshot snapshot} record to the comment." - }, - { - "method": "delete", - "path": "/bbs/articles/{articleId}/comments/{id}", - "name": "bbs_articles_comments_eraseByArticleidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged article's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target comment's " - }, - { - "type": "object", - "properties": { - "password": { - "type": "string" - } - }, - "required": [ - "password" - ] - } - ], - "description": "Erase a comment.\n\nPerforms soft deletion to the comment." - }, - { - "method": "get", - "path": "/monitors/health", - "name": "monitors_health_get", - "parameters": [], - "description": "Health check API." - }, - { - "method": "get", - "path": "/monitors/performance", - "name": "monitors_performance_get", - "parameters": [], - "output": { - "type": "object", - "properties": { - "cpu": { - "type": "object", - "properties": { - "user": { - "type": "number" - }, - "system": { - "type": "number" - } - }, - "required": [ - "user", - "system" - ] - }, - "memory": { - "type": "object", - "properties": { - "rss": { - "type": "number" - }, - "heapTotal": { - "type": "number" - }, - "heapUsed": { - "type": "number" - }, - "external": { - "type": "number" - }, - "arrayBuffers": { - "type": "number" - } - }, - "required": [ - "rss", - "heapTotal", - "heapUsed", - "external", - "arrayBuffers" - ] - }, - "resource": { - "type": "object", - "properties": { - "fsRead": { - "type": "number" - }, - "fsWrite": { - "type": "number" - }, - "involuntaryContextSwitches": { - "type": "number" - }, - "ipcReceived": { - "type": "number" - }, - "ipcSent": { - "type": "number" - }, - "majorPageFault": { - "type": "number" - }, - "maxRSS": { - "type": "number" - }, - "minorPageFault": { - "type": "number" - }, - "sharedMemorySize": { - "type": "number" - }, - "signalsCount": { - "type": "number" - }, - "swappedOut": { - "type": "number" - }, - "systemCPUTime": { - "type": "number" - }, - "unsharedDataSize": { - "type": "number" - }, - "unsharedStackSize": { - "type": "number" - }, - "userCPUTime": { - "type": "number" - }, - "voluntaryContextSwitches": { - "type": "number" - } - }, - "required": [ - "fsRead", - "fsWrite", - "involuntaryContextSwitches", - "ipcReceived", - "ipcSent", - "majorPageFault", - "maxRSS", - "minorPageFault", - "sharedMemorySize", - "signalsCount", - "swappedOut", - "systemCPUTime", - "unsharedDataSize", - "unsharedStackSize", - "userCPUTime", - "voluntaryContextSwitches" - ] - } - }, - "required": [ - "cpu", - "memory", - "resource" - ] - }, - "description": "Get performance information.\n\nGet perofmration information composed with CPU, memory and resource usage." - }, - { - "method": "get", - "path": "/monitors/system", - "name": "monitors_system_get", - "parameters": [], - "output": { - "type": "object", - "properties": { - "uid": { - "type": "number", - "title": "Random Unique ID", - "description": "Random Unique ID." - }, - "arguments": { - "type": "array", - "items": { - "type": "string" - }, - "description": "`process.argv`" - }, - "commit": { - "type": "object", - "properties": { - "shortHash": { - "type": "string" - }, - "branch": { - "type": "string" - }, - "hash": { - "type": "string" - }, - "subject": { - "type": "string" - }, - "sanitizedSubject": { - "type": "string" - }, - "body": { - "type": "string" - }, - "author": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "email": { - "type": "string" - } - }, - "required": [ - "name", - "email" - ], - "description": "Git user account info." - }, - "committer": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "email": { - "type": "string" - } - }, - "required": [ - "name", - "email" - ], - "description": "Git user account info." - }, - "authored_at": { - "type": "string" - }, - "commited_at": { - "type": "string" - }, - "notes": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "shortHash", - "branch", - "hash", - "subject", - "sanitizedSubject", - "body", - "author", - "committer", - "authored_at", - "commited_at", - "tags" - ], - "description": "Git commit info." - }, - "package": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "string" - }, - "description": { - "type": "string" - }, - "main": { - "type": "string" - }, - "typings": { - "type": "string" - }, - "scripts": { - "type": "object", - "properties": {}, - "description": "Construct a type with a set of properties K of type T", - "additionalProperties": { - "type": "string" - } - }, - "repository": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "git" - ] - }, - "url": { - "type": "string" - } - }, - "required": [ - "type", - "url" - ] - }, - "author": { - "type": "string" - }, - "license": { - "type": "string" - }, - "bugs": { - "type": "object", - "properties": { - "url": { - "type": "string" - } - }, - "required": [ - "url" - ] - }, - "homepage": { - "type": "string" - }, - "devDependencies": { - "type": "object", - "properties": {}, - "description": "Construct a type with a set of properties K of type T", - "additionalProperties": { - "type": "string" - } - }, - "dependencies": { - "type": "object", - "properties": {}, - "description": "Construct a type with a set of properties K of type T", - "additionalProperties": { - "type": "string" - } - }, - "publishConfig": { - "type": "object", - "properties": { - "registry": { - "type": "string" - } - }, - "required": [ - "registry" - ] - }, - "files": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "name", - "version", - "description", - "scripts", - "repository", - "author", - "license", - "bugs", - "homepage", - "dependencies" - ], - "description": "NPM package info." - }, - "created_at": { - "type": "string", - "title": "Creation time of this server", - "description": "Creation time of this server." - } - }, - "required": [ - "uid", - "arguments", - "commit", - "package", - "created_at" - ], - "description": "System Information." - }, - "description": "Get system information.\n\nGet system information with commit and package information." - } - ], - "errors": [], - "options": { - "keyword": false, - "separate": null - } -} \ No newline at end of file +{"openapi":"3.0.3","functions":[{"method":"post","path":"/bbs/articles","name":"bbs_articles_post","parameters":[{"type":"object","properties":{"writer":{"type":"string"},"format":{"type":"string","enum":["txt","md","html"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."},"password":{"type":"string","title":"Password for modification","description":"Password for modification."}},"required":["writer","format","title","body","files","password"],"description":"Store content type of the article."}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"writer":{"type":"string","title":"Writer of article","description":"Writer of article."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["txt","md","html"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["id","writer","snapshots","created_at"],"description":"Article entity.\n\n`IBbsArticle* is a super-type entity of all kinds of articles in the current\nbackend system, literally shaping individual articles of the bulletin board.\n\nAnd, as you can see, the elements that must inevitably exist in the article,\nsuch as the `title` or the `body`, do not exist in the `IBbsArticle`, but exist\nin the subsidiary entity, {@link IBbsArticle.ISnapshot}, as a 1: N relationship,\nwhich is because a new snapshot record is published every time the article is\nmodified.\n\nThe reason why a new snapshot record is published every time the article is\nmodified is to preserve the evidence. Due to the nature of e-community, there\nis always a threat of dispute among the participants. And it can happen that\ndisputes arise through articles or {@link IBbsArticleComment comments}, and to\nprevent such things as modifying existing articles to manipulate the situation,\nthe article is designed in this structure.\n\nIn other words, to keep evidence, and prevent fraud."},"description":"Create a new article.\n\nCreate a new article with its first {@link IBbsArticle.ISnapshot snapshot}."},{"method":"patch","path":"/bbs/articles","name":"bbs_articles_patch","parameters":[{"type":"object","properties":{"search":{"type":"object","properties":{"writer":{"type":"string"},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}},"description":"검색 정보."},"sort":{"type":"array","items":{"type":"string","enum":["-writer","-title","-created_at","-updated_at","+writer","+title","+created_at","+updated_at"]},"title":"Sort condition","description":"Sort condition."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"writer":{"type":"string","title":"Writer of the article","description":"Writer of the article."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["id","writer","title","created_at","updated_at"],"description":"Summarized information of the article."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up all summarized articles.\n\nList up all summarized articles with pagination and searching options."},{"method":"patch","path":"/bbs/articles/abridges","name":"bbs_articles_abridges_patch","parameters":[{"type":"object","properties":{"search":{"type":"object","properties":{"writer":{"type":"string"},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}},"description":"검색 정보."},"sort":{"type":"array","items":{"type":"string","enum":["-writer","-title","-created_at","-updated_at","+writer","+title","+created_at","+updated_at"]},"title":"Sort condition","description":"Sort condition."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"writer":{"type":"string","title":"Writer of the article","description":"Writer of the article."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["txt","md","html"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","writer","title","created_at","updated_at","format","body","files"],"description":"Abriged information of the article."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up all abridged articles.\n\nList up all abridged articles with pagination and searching options."},{"method":"get","path":"/bbs/articles/{id}","name":"bbs_articles_getById","parameters":[{"type":"string","format":"uuid","description":" Target article's {@link IBbsArticle.id}"}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"writer":{"type":"string","title":"Writer of article","description":"Writer of article."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["txt","md","html"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["id","writer","snapshots","created_at"],"description":"Article entity.\n\n`IBbsArticle* is a super-type entity of all kinds of articles in the current\nbackend system, literally shaping individual articles of the bulletin board.\n\nAnd, as you can see, the elements that must inevitably exist in the article,\nsuch as the `title` or the `body`, do not exist in the `IBbsArticle`, but exist\nin the subsidiary entity, {@link IBbsArticle.ISnapshot}, as a 1: N relationship,\nwhich is because a new snapshot record is published every time the article is\nmodified.\n\nThe reason why a new snapshot record is published every time the article is\nmodified is to preserve the evidence. Due to the nature of e-community, there\nis always a threat of dispute among the participants. And it can happen that\ndisputes arise through articles or {@link IBbsArticleComment comments}, and to\nprevent such things as modifying existing articles to manipulate the situation,\nthe article is designed in this structure.\n\nIn other words, to keep evidence, and prevent fraud."},"description":"Read individual article.\n\nReads an article with its every {@link IBbsArticle.ISnapshot snapshots}."},{"method":"put","path":"/bbs/articles/{id}","name":"bbs_articles_putById","parameters":[{"type":"string","format":"uuid","description":" Target article's {@link IBbsArticle.id}"},{"type":"object","properties":{"format":{"type":"string","enum":["txt","md","html"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."},"password":{"type":"string","title":"Password for modification","description":"Password for modification."}},"required":["format","title","body","files","password"]}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["txt","md","html"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"description":"Update an article.\n\nAccumulate a new {@link IBbsArticle.ISnapshot snapshot} record to the article."},{"method":"delete","path":"/bbs/articles/{id}","name":"bbs_articles_eraseById","parameters":[{"type":"string","format":"uuid","description":" Target article's {@link IBbsArticle.id}"},{"type":"object","properties":{"password":{"type":"string"}},"required":["password"]}],"description":"Erase an article.\n\nPerforms soft deletion to the article."},{"method":"post","path":"/bbs/articles/{articleId}/comments","name":"bbs_articles_comments_postByArticleid","parameters":[{"type":"string","format":"uuid","description":" Belonged article's {@link IBbsArticle.id }"},{"type":"object","properties":{"writer":{"type":"string","title":"Writer of comment","description":"Writer of comment."},"format":{"type":"string","enum":["txt","md","html"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."},"password":{"type":"string","title":"Password for modification","description":"Password for modification."}},"required":["writer","format","body","files","password"]}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"writer":{"type":"string","title":"Writer of comment","description":"Writer of comment."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["txt","md","html"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["id","parent_id","writer","snapshots","created_at"],"description":"Comment written on an article.\n\n`IBbsArticleComment` is an entity that shapes the comments written on an article.\n\nAnd for this comment, as in the previous relationship between\n{@link IBbsArticle} and {@link IBbsArticle.ISnapshot}, the content body of the\ncomment is stored in the sub {@link IBbsArticleComment.ISnapshot} table for\nevidentialism, and a new snapshot record is issued every time the comment is modified.\n\nAlso, `IBbsArticleComment` is expressing the relationship of the hierarchical reply\nstructure through the {@link IBbsArticleComment.parent_id} attribute."},"description":"Create a new comment.\n\nCreate a new comment with its first {@link IBbsArticleComment.ISnapshot snapshot}."},{"method":"patch","path":"/bbs/articles/{articleId}/comments","name":"bbs_articles_comments_patchByArticleid","parameters":[{"type":"string","format":"uuid"},{"type":"object","properties":{"search":{"type":"object","properties":{"writer":{"type":"string"},"body":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-writer","-created_at","+writer","+created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"writer":{"type":"string","title":"Writer of comment","description":"Writer of comment."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["txt","md","html"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["id","parent_id","writer","snapshots","created_at"],"description":"Comment written on an article.\n\n`IBbsArticleComment` is an entity that shapes the comments written on an article.\n\nAnd for this comment, as in the previous relationship between\n{@link IBbsArticle} and {@link IBbsArticle.ISnapshot}, the content body of the\ncomment is stored in the sub {@link IBbsArticleComment.ISnapshot} table for\nevidentialism, and a new snapshot record is issued every time the comment is modified.\n\nAlso, `IBbsArticleComment` is expressing the relationship of the hierarchical reply\nstructure through the {@link IBbsArticleComment.parent_id} attribute."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up all summarized comments.\n\nList up all summarized comments with pagination and searching options."},{"method":"get","path":"/bbs/articles/{articleId}/comments/{id}","name":"bbs_articles_comments_getByArticleidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged article's {@link IBbsArticle.id }"},{"type":"string","format":"uuid","description":" Target comment's {@link IBbsArticleComment.id}"}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"writer":{"type":"string","title":"Writer of comment","description":"Writer of comment."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["txt","md","html"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["id","parent_id","writer","snapshots","created_at"],"description":"Comment written on an article.\n\n`IBbsArticleComment` is an entity that shapes the comments written on an article.\n\nAnd for this comment, as in the previous relationship between\n{@link IBbsArticle} and {@link IBbsArticle.ISnapshot}, the content body of the\ncomment is stored in the sub {@link IBbsArticleComment.ISnapshot} table for\nevidentialism, and a new snapshot record is issued every time the comment is modified.\n\nAlso, `IBbsArticleComment` is expressing the relationship of the hierarchical reply\nstructure through the {@link IBbsArticleComment.parent_id} attribute."},"description":"Read individual comment.\n\nReads a comment with its every {@link IBbsArticleComment.ISnapshot snapshots}."},{"method":"put","path":"/bbs/articles/{articleId}/comments/{id}","name":"bbs_articles_comments_putByArticleidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged article's {@link IBbsArticle.id }"},{"type":"string","format":"uuid","description":" Target comment's {@link IBbsArticleComment.id}"},{"type":"object","properties":{"format":{"type":"string","enum":["txt","md","html"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"password":{"type":"string","title":"Password for modification","description":"Password for modification."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","password","body","files"]}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["txt","md","html"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"description":"Update a comment.\n\nAccumulate a new {@link IBbsArticleComment.ISnapshot snapshot} record to the comment."},{"method":"delete","path":"/bbs/articles/{articleId}/comments/{id}","name":"bbs_articles_comments_eraseByArticleidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged article's {@link IBbsArticle.id }"},{"type":"string","format":"uuid","description":" Target comment's {@link IBbsArticleComment.id}"},{"type":"object","properties":{"password":{"type":"string"}},"required":["password"]}],"description":"Erase a comment.\n\nPerforms soft deletion to the comment."},{"method":"get","path":"/monitors/health","name":"monitors_health_get","parameters":[],"description":"Health check API."},{"method":"get","path":"/monitors/performance","name":"monitors_performance_get","parameters":[],"output":{"type":"object","properties":{"cpu":{"type":"object","properties":{"user":{"type":"number"},"system":{"type":"number"}},"required":["user","system"]},"memory":{"type":"object","properties":{"rss":{"type":"number"},"heapTotal":{"type":"number"},"heapUsed":{"type":"number"},"external":{"type":"number"},"arrayBuffers":{"type":"number"}},"required":["rss","heapTotal","heapUsed","external","arrayBuffers"]},"resource":{"type":"object","properties":{"fsRead":{"type":"number"},"fsWrite":{"type":"number"},"involuntaryContextSwitches":{"type":"number"},"ipcReceived":{"type":"number"},"ipcSent":{"type":"number"},"majorPageFault":{"type":"number"},"maxRSS":{"type":"number"},"minorPageFault":{"type":"number"},"sharedMemorySize":{"type":"number"},"signalsCount":{"type":"number"},"swappedOut":{"type":"number"},"systemCPUTime":{"type":"number"},"unsharedDataSize":{"type":"number"},"unsharedStackSize":{"type":"number"},"userCPUTime":{"type":"number"},"voluntaryContextSwitches":{"type":"number"}},"required":["fsRead","fsWrite","involuntaryContextSwitches","ipcReceived","ipcSent","majorPageFault","maxRSS","minorPageFault","sharedMemorySize","signalsCount","swappedOut","systemCPUTime","unsharedDataSize","unsharedStackSize","userCPUTime","voluntaryContextSwitches"]}},"required":["cpu","memory","resource"]},"description":"Get performance information.\n\nGet perofmration information composed with CPU, memory and resource usage."},{"method":"get","path":"/monitors/system","name":"monitors_system_get","parameters":[],"output":{"type":"object","properties":{"uid":{"type":"number","title":"Random Unique ID","description":"Random Unique ID."},"arguments":{"type":"array","items":{"type":"string"},"description":"`process.argv`"},"commit":{"type":"object","properties":{"shortHash":{"type":"string"},"branch":{"type":"string"},"hash":{"type":"string"},"subject":{"type":"string"},"sanitizedSubject":{"type":"string"},"body":{"type":"string"},"author":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"}},"required":["name","email"],"description":"Git user account info."},"committer":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"}},"required":["name","email"],"description":"Git user account info."},"authored_at":{"type":"string"},"commited_at":{"type":"string"},"notes":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}}},"required":["shortHash","branch","hash","subject","sanitizedSubject","body","author","committer","authored_at","commited_at","tags"],"description":"Git commit info."},"package":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"description":{"type":"string"},"main":{"type":"string"},"typings":{"type":"string"},"scripts":{"type":"object","properties":{},"description":"Construct a type with a set of properties K of type T","additionalProperties":{"type":"string"}},"repository":{"type":"object","properties":{"type":{"type":"string","enum":["git"]},"url":{"type":"string"}},"required":["type","url"]},"author":{"type":"string"},"license":{"type":"string"},"bugs":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]},"homepage":{"type":"string"},"devDependencies":{"type":"object","properties":{},"description":"Construct a type with a set of properties K of type T","additionalProperties":{"type":"string"}},"dependencies":{"type":"object","properties":{},"description":"Construct a type with a set of properties K of type T","additionalProperties":{"type":"string"}},"publishConfig":{"type":"object","properties":{"registry":{"type":"string"}},"required":["registry"]},"files":{"type":"array","items":{"type":"string"}}},"required":["name","version","description","scripts","repository","author","license","bugs","homepage","dependencies"],"description":"NPM package info."},"created_at":{"type":"string","title":"Creation time of this server","description":"Creation time of this server."}},"required":["uid","arguments","commit","package","created_at"],"description":"System Information."},"description":"Get system information.\n\nGet system information with commit and package information."}],"errors":[],"options":{"keyword":false,"separate":null}} \ No newline at end of file diff --git a/examples/positional/clickhouse.json b/examples/positional/clickhouse.json index bd52091..833efc2 100644 --- a/examples/positional/clickhouse.json +++ b/examples/positional/clickhouse.json @@ -1,851 +1 @@ -{ - "openapi": "3.0.3", - "functions": [ - { - "method": "get", - "path": "/v1/organizations", - "name": "v1_organizations_get", - "parameters": [], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Get list of available organizations.\n\nReturns a list with a single organization associated with the API key in the request." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId", - "name": "v1_organizations_getByOrganizationid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Get organization details.\n\nReturns details of a single organization. In order to get the details, the auth key must belong to the organization." - }, - { - "method": "patch", - "path": "/v1/organizations/:organizationId", - "name": "v1_organizations_patchByOrganizationid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the organization to update." - }, - {} - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Update organization details.\n\nUpdates organization fields. Requires ADMIN auth key role." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/services", - "name": "v1_organizations_services_getByOrganizationid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "List of organization services.\n\nReturns a list of all services in the organization." - }, - { - "method": "post", - "path": "/v1/organizations/:organizationId/services", - "name": "v1_organizations_services_postByOrganizationid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the organization that will own the service." - }, - {} - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Create new service.\n\nCreates a new service in the organization, and returns the current service state and a password to access the service. The service is started asynchronously." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/services/:serviceId", - "name": "v1_organizations_services_getByOrganizationidAndServiceid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the organization that owns the service." - }, - { - "type": "string", - "format": "uuid", - "description": "ID of the requested service." - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Get service details.\n\nReturns a service that belongs to the organization" - }, - { - "method": "patch", - "path": "/v1/organizations/:organizationId/services/:serviceId", - "name": "v1_organizations_services_patchByOrganizationidAndServiceid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the organization that owns the service." - }, - { - "type": "string", - "format": "uuid", - "description": "ID of the service to update." - }, - {} - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Update service basic details.\n\nUpdates basic service details like service name or IP access list." - }, - { - "method": "delete", - "path": "/v1/organizations/:organizationId/services/:serviceId", - "name": "v1_organizations_services_eraseByOrganizationidAndServiceid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the organization that owns the service." - }, - { - "type": "string", - "format": "uuid", - "description": "ID of the service to delete." - } - ], - "description": "Delete service.\n\nDeletes the service. The service must be in stopped state and is deleted asynchronously after this method call." - }, - { - "method": "patch", - "path": "/v1/organizations/:organizationId/services/:serviceId/state", - "name": "v1_organizations_services_state_patchByOrganizationidAndServiceid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the organization that owns the service." - }, - { - "type": "string", - "format": "uuid", - "description": "ID of the service to update state." - }, - {} - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Update service state.\n\nStarts or stop service" - }, - { - "method": "patch", - "path": "/v1/organizations/:organizationId/services/:serviceId/scaling", - "name": "v1_organizations_services_scaling_patchByOrganizationidAndServiceid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the organization that owns the service." - }, - { - "type": "string", - "format": "uuid", - "description": "ID of the service to update scaling parameters." - }, - {} - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Update service auto scaling settings.\n\nUpdates minimum and maximum total memory limits and idle mode scaling behavior for the service. The memory settings are available only for \"production\" services and must be a multiple of 12 starting from 24GB." - }, - { - "method": "patch", - "path": "/v1/organizations/:organizationId/services/:serviceId/password", - "name": "v1_organizations_services_password_patchByOrganizationidAndServiceid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the organization that owns the service." - }, - { - "type": "string", - "format": "uuid", - "description": "ID of the service to update password." - }, - {} - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Update service password.\n\nSets a new password for the service" - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/services/:serviceId/backups", - "name": "v1_organizations_services_backups_getByOrganizationidAndServiceid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the organization that owns the backup." - }, - { - "type": "string", - "format": "uuid", - "description": "ID of the service the backup was created from." - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "List of service backups.\n\nReturns a list of all backups for the service." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/services/:serviceId/backups/:backupId", - "name": "v1_organizations_services_backups_getByOrganizationidAndServiceidAndBackupid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the organization that owns the backup." - }, - { - "type": "string", - "format": "uuid", - "description": "ID of the service the backup was created from." - }, - { - "type": "string", - "format": "uuid", - "description": "ID of the requested backup." - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Get backup details.\n\nReturns a single backup info." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/keys", - "name": "v1_organizations_keys_getByOrganizationid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Get list of all keys.\n\nReturns a list of all keys in the organization." - }, - { - "method": "post", - "path": "/v1/organizations/:organizationId/keys", - "name": "v1_organizations_keys_postByOrganizationid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the organization that will own the key." - }, - {} - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Create key.\n\nCreates new API key." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/keys/:keyId", - "name": "v1_organizations_keys_getByOrganizationidAndKeyid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - }, - { - "type": "string", - "format": "uuid", - "description": "ID of the requested key." - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Get key details.\n\nReturns a single key details." - }, - { - "method": "patch", - "path": "/v1/organizations/:organizationId/keys/:keyId", - "name": "v1_organizations_keys_patchByOrganizationidAndKeyid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the organization that owns the key." - }, - { - "type": "string", - "format": "uuid", - "description": "ID of the key to update." - }, - {} - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Update key.\n\nUpdates API key properties." - }, - { - "method": "delete", - "path": "/v1/organizations/:organizationId/keys/:keyId", - "name": "v1_organizations_keys_eraseByOrganizationidAndKeyid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the organization that owns the key." - }, - { - "type": "string", - "format": "uuid", - "description": "ID of the key to delete." - } - ], - "description": "Delete key.\n\nDeletes API key. Only a key not used to authenticate the active request can be deleted." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/members", - "name": "v1_organizations_members_getByOrganizationid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "List organization members.\n\nReturns a list of all members in the organization." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/members/:userId", - "name": "v1_organizations_members_getByOrganizationidAndUserid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the organization the member is part of." - }, - { - "type": "string", - "format": "uuid", - "description": "ID of the requested user." - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Get member details.\n\nReturns a single organization member details." - }, - { - "method": "patch", - "path": "/v1/organizations/:organizationId/members/:userId", - "name": "v1_organizations_members_patchByOrganizationidAndUserid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the organization the member is part of." - }, - { - "type": "string", - "format": "uuid", - "description": "ID of the user to patch" - }, - {} - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Update organization member.\n\nUpdates organization member role." - }, - { - "method": "delete", - "path": "/v1/organizations/:organizationId/members/:userId", - "name": "v1_organizations_members_eraseByOrganizationidAndUserid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - }, - { - "type": "string", - "format": "uuid", - "description": "ID of the requested user." - } - ], - "description": "Remove an organization member.\n\nRemoves a user from the organization" - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/invitations", - "name": "v1_organizations_invitations_getByOrganizationid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "List all invitations.\n\nReturns list of all organization invitations." - }, - { - "method": "post", - "path": "/v1/organizations/:organizationId/invitations", - "name": "v1_organizations_invitations_postByOrganizationid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the organization to invite a user to." - }, - {} - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Create an invitation.\n\nCreates organization invitation." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/invitations/:invitationId", - "name": "v1_organizations_invitations_getByOrganizationidAndInvitationid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - }, - { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Get invitation details.\n\nReturns details for a single organization invitation." - }, - { - "method": "delete", - "path": "/v1/organizations/:organizationId/invitations/:invitationId", - "name": "v1_organizations_invitations_eraseByOrganizationidAndInvitationid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the organization that has the invitation." - }, - { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - } - ], - "description": "Delete organization invitation.\n\nDeletes a single organization invitation." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/activities", - "name": "v1_organizations_activities_getByOrganizationid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "List of organization activities.\n\nReturns a list of all organization activities." - }, - { - "method": "get", - "path": "/v1/organizations/:organizationId/activities/:activityId", - "name": "v1_organizations_activities_getByOrganizationidAndActivityid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "ID of the requested organization." - }, - { - "type": "string", - "description": "ID of the requested activity." - } - ], - "output": { - "type": "object", - "properties": { - "result": {}, - "status": { - "type": "number", - "description": "HTTP status code.", - "example": 200 - }, - "requestId": { - "type": "string", - "description": "Unique id assigned to every request. UUIDv4", - "format": "uuid" - } - } - }, - "description": "Organization activity.\n\nReturns a single organization activity by ID." - } - ], - "errors": [], - "options": { - "keyword": false, - "separate": null - } -} \ No newline at end of file +{"openapi":"3.0.3","functions":[{"method":"get","path":"/v1/organizations","name":"v1_organizations_get","parameters":[],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Get list of available organizations.\n\nReturns a list with a single organization associated with the API key in the request."},{"method":"get","path":"/v1/organizations/:organizationId","name":"v1_organizations_getByOrganizationid","parameters":[{"type":"string","format":"uuid","description":"ID of the requested organization."}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Get organization details.\n\nReturns details of a single organization. In order to get the details, the auth key must belong to the organization."},{"method":"patch","path":"/v1/organizations/:organizationId","name":"v1_organizations_patchByOrganizationid","parameters":[{"type":"string","format":"uuid","description":"ID of the organization to update."},{}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Update organization details.\n\nUpdates organization fields. Requires ADMIN auth key role."},{"method":"get","path":"/v1/organizations/:organizationId/services","name":"v1_organizations_services_getByOrganizationid","parameters":[{"type":"string","format":"uuid","description":"ID of the requested organization."}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"List of organization services.\n\nReturns a list of all services in the organization."},{"method":"post","path":"/v1/organizations/:organizationId/services","name":"v1_organizations_services_postByOrganizationid","parameters":[{"type":"string","format":"uuid","description":"ID of the organization that will own the service."},{}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Create new service.\n\nCreates a new service in the organization, and returns the current service state and a password to access the service. The service is started asynchronously."},{"method":"get","path":"/v1/organizations/:organizationId/services/:serviceId","name":"v1_organizations_services_getByOrganizationidAndServiceid","parameters":[{"type":"string","format":"uuid","description":"ID of the organization that owns the service."},{"type":"string","format":"uuid","description":"ID of the requested service."}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Get service details.\n\nReturns a service that belongs to the organization"},{"method":"patch","path":"/v1/organizations/:organizationId/services/:serviceId","name":"v1_organizations_services_patchByOrganizationidAndServiceid","parameters":[{"type":"string","format":"uuid","description":"ID of the organization that owns the service."},{"type":"string","format":"uuid","description":"ID of the service to update."},{}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Update service basic details.\n\nUpdates basic service details like service name or IP access list."},{"method":"delete","path":"/v1/organizations/:organizationId/services/:serviceId","name":"v1_organizations_services_eraseByOrganizationidAndServiceid","parameters":[{"type":"string","format":"uuid","description":"ID of the organization that owns the service."},{"type":"string","format":"uuid","description":"ID of the service to delete."}],"description":"Delete service.\n\nDeletes the service. The service must be in stopped state and is deleted asynchronously after this method call."},{"method":"patch","path":"/v1/organizations/:organizationId/services/:serviceId/state","name":"v1_organizations_services_state_patchByOrganizationidAndServiceid","parameters":[{"type":"string","format":"uuid","description":"ID of the organization that owns the service."},{"type":"string","format":"uuid","description":"ID of the service to update state."},{}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Update service state.\n\nStarts or stop service"},{"method":"patch","path":"/v1/organizations/:organizationId/services/:serviceId/scaling","name":"v1_organizations_services_scaling_patchByOrganizationidAndServiceid","parameters":[{"type":"string","format":"uuid","description":"ID of the organization that owns the service."},{"type":"string","format":"uuid","description":"ID of the service to update scaling parameters."},{}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Update service auto scaling settings.\n\nUpdates minimum and maximum total memory limits and idle mode scaling behavior for the service. The memory settings are available only for \"production\" services and must be a multiple of 12 starting from 24GB."},{"method":"patch","path":"/v1/organizations/:organizationId/services/:serviceId/password","name":"v1_organizations_services_password_patchByOrganizationidAndServiceid","parameters":[{"type":"string","format":"uuid","description":"ID of the organization that owns the service."},{"type":"string","format":"uuid","description":"ID of the service to update password."},{}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Update service password.\n\nSets a new password for the service"},{"method":"get","path":"/v1/organizations/:organizationId/services/:serviceId/backups","name":"v1_organizations_services_backups_getByOrganizationidAndServiceid","parameters":[{"type":"string","format":"uuid","description":"ID of the organization that owns the backup."},{"type":"string","format":"uuid","description":"ID of the service the backup was created from."}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"List of service backups.\n\nReturns a list of all backups for the service."},{"method":"get","path":"/v1/organizations/:organizationId/services/:serviceId/backups/:backupId","name":"v1_organizations_services_backups_getByOrganizationidAndServiceidAndBackupid","parameters":[{"type":"string","format":"uuid","description":"ID of the organization that owns the backup."},{"type":"string","format":"uuid","description":"ID of the service the backup was created from."},{"type":"string","format":"uuid","description":"ID of the requested backup."}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Get backup details.\n\nReturns a single backup info."},{"method":"get","path":"/v1/organizations/:organizationId/keys","name":"v1_organizations_keys_getByOrganizationid","parameters":[{"type":"string","format":"uuid","description":"ID of the requested organization."}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Get list of all keys.\n\nReturns a list of all keys in the organization."},{"method":"post","path":"/v1/organizations/:organizationId/keys","name":"v1_organizations_keys_postByOrganizationid","parameters":[{"type":"string","format":"uuid","description":"ID of the organization that will own the key."},{}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Create key.\n\nCreates new API key."},{"method":"get","path":"/v1/organizations/:organizationId/keys/:keyId","name":"v1_organizations_keys_getByOrganizationidAndKeyid","parameters":[{"type":"string","format":"uuid","description":"ID of the requested organization."},{"type":"string","format":"uuid","description":"ID of the requested key."}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Get key details.\n\nReturns a single key details."},{"method":"patch","path":"/v1/organizations/:organizationId/keys/:keyId","name":"v1_organizations_keys_patchByOrganizationidAndKeyid","parameters":[{"type":"string","format":"uuid","description":"ID of the organization that owns the key."},{"type":"string","format":"uuid","description":"ID of the key to update."},{}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Update key.\n\nUpdates API key properties."},{"method":"delete","path":"/v1/organizations/:organizationId/keys/:keyId","name":"v1_organizations_keys_eraseByOrganizationidAndKeyid","parameters":[{"type":"string","format":"uuid","description":"ID of the organization that owns the key."},{"type":"string","format":"uuid","description":"ID of the key to delete."}],"description":"Delete key.\n\nDeletes API key. Only a key not used to authenticate the active request can be deleted."},{"method":"get","path":"/v1/organizations/:organizationId/members","name":"v1_organizations_members_getByOrganizationid","parameters":[{"type":"string","format":"uuid","description":"ID of the requested organization."}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"List organization members.\n\nReturns a list of all members in the organization."},{"method":"get","path":"/v1/organizations/:organizationId/members/:userId","name":"v1_organizations_members_getByOrganizationidAndUserid","parameters":[{"type":"string","format":"uuid","description":"ID of the organization the member is part of."},{"type":"string","format":"uuid","description":"ID of the requested user."}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Get member details.\n\nReturns a single organization member details."},{"method":"patch","path":"/v1/organizations/:organizationId/members/:userId","name":"v1_organizations_members_patchByOrganizationidAndUserid","parameters":[{"type":"string","format":"uuid","description":"ID of the organization the member is part of."},{"type":"string","format":"uuid","description":"ID of the user to patch"},{}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Update organization member.\n\nUpdates organization member role."},{"method":"delete","path":"/v1/organizations/:organizationId/members/:userId","name":"v1_organizations_members_eraseByOrganizationidAndUserid","parameters":[{"type":"string","format":"uuid","description":"ID of the requested organization."},{"type":"string","format":"uuid","description":"ID of the requested user."}],"description":"Remove an organization member.\n\nRemoves a user from the organization"},{"method":"get","path":"/v1/organizations/:organizationId/invitations","name":"v1_organizations_invitations_getByOrganizationid","parameters":[{"type":"string","format":"uuid","description":"ID of the requested organization."}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"List all invitations.\n\nReturns list of all organization invitations."},{"method":"post","path":"/v1/organizations/:organizationId/invitations","name":"v1_organizations_invitations_postByOrganizationid","parameters":[{"type":"string","format":"uuid","description":"ID of the organization to invite a user to."},{}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Create an invitation.\n\nCreates organization invitation."},{"method":"get","path":"/v1/organizations/:organizationId/invitations/:invitationId","name":"v1_organizations_invitations_getByOrganizationidAndInvitationid","parameters":[{"type":"string","format":"uuid","description":"ID of the requested organization."},{"type":"string","format":"uuid","description":"ID of the requested organization."}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Get invitation details.\n\nReturns details for a single organization invitation."},{"method":"delete","path":"/v1/organizations/:organizationId/invitations/:invitationId","name":"v1_organizations_invitations_eraseByOrganizationidAndInvitationid","parameters":[{"type":"string","format":"uuid","description":"ID of the organization that has the invitation."},{"type":"string","format":"uuid","description":"ID of the requested organization."}],"description":"Delete organization invitation.\n\nDeletes a single organization invitation."},{"method":"get","path":"/v1/organizations/:organizationId/activities","name":"v1_organizations_activities_getByOrganizationid","parameters":[{"type":"string","format":"uuid","description":"ID of the requested organization."}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"List of organization activities.\n\nReturns a list of all organization activities."},{"method":"get","path":"/v1/organizations/:organizationId/activities/:activityId","name":"v1_organizations_activities_getByOrganizationidAndActivityid","parameters":[{"type":"string","format":"uuid","description":"ID of the requested organization."},{"type":"string","description":"ID of the requested activity."}],"output":{"type":"object","properties":{"result":{},"status":{"type":"number","description":"HTTP status code.","example":200},"requestId":{"type":"string","description":"Unique id assigned to every request. UUIDv4","format":"uuid"}}},"description":"Organization activity.\n\nReturns a single organization activity by ID."}],"errors":[],"options":{"keyword":false,"separate":null}} \ No newline at end of file diff --git a/examples/positional/fireblocks.json b/examples/positional/fireblocks.json index 57861e6..bf065ee 100644 --- a/examples/positional/fireblocks.json +++ b/examples/positional/fireblocks.json @@ -1,15394 +1 @@ -{ - "openapi": "3.0.3", - "functions": [ - { - "method": "get", - "path": "/vault/accounts", - "name": "vault_accounts_get", - "parameters": [ - { - "type": "object", - "properties": { - "namePrefix": { - "type": "string" - }, - "nameSuffix": { - "type": "string" - }, - "minAmountThreshold": { - "type": "number" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset" - } - }, - "required": [] - } - ], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "total": { - "description": "The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.", - "type": "string" - }, - "balance": { - "deprecated": true, - "description": "Deprecated - replaced by \"total\"", - "type": "string" - }, - "available": { - "description": "Funds available for transfer. Equals the blockchain balance minus any locked amounts", - "type": "string" - }, - "pending": { - "description": "The cumulative balance of all transactions pending to be cleared", - "type": "string" - }, - "frozen": { - "description": "The cumulative frozen balance", - "type": "string" - }, - "lockedAmount": { - "description": "Funds in outgoing transactions that are not yet published to the network", - "type": "string" - }, - "staked": { - "description": "Staked balance", - "type": "string" - }, - "totalStakedCPU": { - "type": "number", - "description": "Deprecated" - }, - "totalStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedCPU": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundCPU": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundNetwork": { - "type": "string", - "description": "Deprecated" - }, - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - }, - "rewardsInfo": { - "type": "object", - "properties": { - "pendingRewards": { - "description": "Amount that is pending for rewards", - "type": "string" - } - } - } - } - } - }, - "hiddenOnUI": { - "type": "boolean" - }, - "customerRefId": { - "type": "string" - }, - "autoFuel": { - "type": "boolean" - } - } - } - }, - "description": "List vault accounts.\n\nGets all vault accounts in your workspace." - }, - { - "method": "post", - "path": "/vault/accounts", - "name": "vault_accounts_post", - "parameters": [ - {} - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "total": { - "description": "The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.", - "type": "string" - }, - "balance": { - "deprecated": true, - "description": "Deprecated - replaced by \"total\"", - "type": "string" - }, - "available": { - "description": "Funds available for transfer. Equals the blockchain balance minus any locked amounts", - "type": "string" - }, - "pending": { - "description": "The cumulative balance of all transactions pending to be cleared", - "type": "string" - }, - "frozen": { - "description": "The cumulative frozen balance", - "type": "string" - }, - "lockedAmount": { - "description": "Funds in outgoing transactions that are not yet published to the network", - "type": "string" - }, - "staked": { - "description": "Staked balance", - "type": "string" - }, - "totalStakedCPU": { - "type": "number", - "description": "Deprecated" - }, - "totalStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedCPU": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundCPU": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundNetwork": { - "type": "string", - "description": "Deprecated" - }, - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - }, - "rewardsInfo": { - "type": "object", - "properties": { - "pendingRewards": { - "description": "Amount that is pending for rewards", - "type": "string" - } - } - } - } - } - }, - "hiddenOnUI": { - "type": "boolean" - }, - "customerRefId": { - "type": "string" - }, - "autoFuel": { - "type": "boolean" - } - } - }, - "description": "Create a new vault account.\n\nCreates a new vault account with the requested name." - }, - { - "method": "get", - "path": "/vault/accounts_paged", - "name": "vault_accounts_paged_get", - "parameters": [ - { - "type": "object", - "properties": { - "namePrefix": { - "type": "string" - }, - "nameSuffix": { - "type": "string" - }, - "minAmountThreshold": { - "type": "number" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset" - }, - "before": { - "type": "string" - }, - "after": { - "type": "string" - }, - "limit": { - "type": "number", - "minimum": 1, - "maximum": 500, - "default": 200 - } - }, - "required": [] - } - ], - "output": { - "type": "object", - "properties": { - "accounts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "total": { - "description": "The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.", - "type": "string" - }, - "balance": { - "deprecated": true, - "description": "Deprecated - replaced by \"total\"", - "type": "string" - }, - "available": { - "description": "Funds available for transfer. Equals the blockchain balance minus any locked amounts", - "type": "string" - }, - "pending": { - "description": "The cumulative balance of all transactions pending to be cleared", - "type": "string" - }, - "frozen": { - "description": "The cumulative frozen balance", - "type": "string" - }, - "lockedAmount": { - "description": "Funds in outgoing transactions that are not yet published to the network", - "type": "string" - }, - "staked": { - "description": "Staked balance", - "type": "string" - }, - "totalStakedCPU": { - "type": "number", - "description": "Deprecated" - }, - "totalStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedCPU": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundCPU": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundNetwork": { - "type": "string", - "description": "Deprecated" - }, - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - }, - "rewardsInfo": { - "type": "object", - "properties": { - "pendingRewards": { - "description": "Amount that is pending for rewards", - "type": "string" - } - } - } - } - } - }, - "hiddenOnUI": { - "type": "boolean" - }, - "customerRefId": { - "type": "string" - }, - "autoFuel": { - "type": "boolean" - } - } - } - }, - "paging": { - "type": "object", - "properties": { - "before": { - "type": "string" - }, - "after": { - "type": "string" - } - } - }, - "previousUrl": { - "type": "string" - }, - "nextUrl": { - "type": "string" - } - } - }, - "description": "List vault acounts (Paginated).\n\nGets all vault accounts in your workspace. This endpoint returns a limited amount of results with a quick response time." - }, - { - "method": "get", - "path": "/vault/accounts/{vaultAccountId}", - "name": "vault_accounts_getByVaultaccountid", - "parameters": [ - { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account to return type: string" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "total": { - "description": "The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.", - "type": "string" - }, - "balance": { - "deprecated": true, - "description": "Deprecated - replaced by \"total\"", - "type": "string" - }, - "available": { - "description": "Funds available for transfer. Equals the blockchain balance minus any locked amounts", - "type": "string" - }, - "pending": { - "description": "The cumulative balance of all transactions pending to be cleared", - "type": "string" - }, - "frozen": { - "description": "The cumulative frozen balance", - "type": "string" - }, - "lockedAmount": { - "description": "Funds in outgoing transactions that are not yet published to the network", - "type": "string" - }, - "staked": { - "description": "Staked balance", - "type": "string" - }, - "totalStakedCPU": { - "type": "number", - "description": "Deprecated" - }, - "totalStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedCPU": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundCPU": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundNetwork": { - "type": "string", - "description": "Deprecated" - }, - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - }, - "rewardsInfo": { - "type": "object", - "properties": { - "pendingRewards": { - "description": "Amount that is pending for rewards", - "type": "string" - } - } - } - } - } - }, - "hiddenOnUI": { - "type": "boolean" - }, - "customerRefId": { - "type": "string" - }, - "autoFuel": { - "type": "boolean" - } - } - }, - "description": "Find a vault account by ID.\n\nReturns the requested vault account." - }, - { - "method": "put", - "path": "/vault/accounts/{vaultAccountId}", - "name": "vault_accounts_putByVaultaccountid", - "parameters": [ - { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account to edit" - }, - {} - ], - "description": "Rename a vault account.\n\nRenames the requested vault account." - }, - { - "method": "get", - "path": "/vault/asset_wallets", - "name": "vault_asset_wallets_get", - "parameters": [ - { - "type": "object", - "properties": { - "totalAmountLargerThan": { - "type": "number", - "description": "When specified, only asset wallets with total balance larger than this amount are returned." - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset", - "description": "When specified, only asset wallets cross vault accounts that have this asset ID are returned." - }, - "before": { - "type": "string", - "description": "Fetches the next paginated response before this element. This element is a cursor and is returned at the response of the previous page." - }, - "after": { - "type": "string", - "description": "Fetches the next paginated response after this element. This element is a cursor and is returned at the response of the previous page." - }, - "limit": { - "type": "number", - "minimum": 1, - "maximum": 1000, - "default": 200, - "description": "The maximum number of asset wallets in a single response. The default is 200 and the maximum is 1000." - } - }, - "required": [] - } - ], - "output": { - "type": "object", - "properties": { - "assetWallets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "vaultId": { - "description": "ID of the vault account. You can [get the vault account by this ID](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid) to retrieve vault properties such as its name, auto fueling, hidden on UI or customer reference ID.", - "type": "string" - }, - "assetId": { - "description": "ID of the asset. You can get more information about this asset by using the [supported assets API](https://developers.fireblocks.com/reference/get_supported-assets)", - "type": "string" - }, - "available": { - "description": "Available balance, available to use in a transaction.", - "type": "string" - }, - "total": { - "description": "Total balance at the asset wallet, as seen at the blockchain explorers. This includes balance available, and any kind of unavailable balance such as locked, frozen, or others.", - "type": "string" - }, - "pending": { - "description": "Pending balance.", - "type": "string" - }, - "staked": { - "description": "Staked balance.", - "type": "string" - }, - "frozen": { - "description": "Funds frozen due to the anti-money laundering policy at this workspace.", - "type": "string" - }, - "lockedAmount": { - "description": "Locked balance.", - "type": "string" - }, - "blockHeight": { - "description": "The height (number) of the block of the balance. Can by empty.", - "type": "string" - }, - "blockHash": { - "description": "The hash of the block of the balance. Can by empty.", - "type": "string" - }, - "creationTimestamp": { - "description": "Unix timestamp of the time the asset wallet was created.", - "type": "string" - } - } - } - }, - "paging": { - "type": "object", - "properties": { - "before": { - "description": "A string representing a cursor. Users can use this with a new request to this API endpoint as the “before” request parameter to fetch the previous page of results.", - "type": "string" - }, - "after": { - "description": "A string representing a cursor. Users can use this with a new request to this API endpoint as the “before” request parameter to fetch the next page of results.", - "type": "string" - } - } - } - } - }, - "description": "List asset wallets (Paginated).\n\nGets all asset wallets at all of the vault accounts in your workspace. An asset wallet is an asset at a vault account. This method allows fast traversal of all account balances.\n**Note:**\n - This API endpoint is in limited availability and available for selected customers. If you would like to get early access to this endpoint, please reach out to [Fireblocks Support](https://support.fireblocks.io/hc/en-us/requests/new?ticket_form_id=36000337220)\n - This API call is subject to [rate limits](https://developers.fireblocks.com/reference/rate-limiting).\n" - }, - { - "method": "post", - "path": "/vault/accounts/{vaultAccountId}/hide", - "name": "vault_accounts_hide_postByVaultaccountid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The vault account to hide" - } - ], - "description": "Hide a vault account in the console.\n\nHides the requested vault account from the web console view." - }, - { - "method": "post", - "path": "/vault/accounts/{vaultAccountId}/unhide", - "name": "vault_accounts_unhide_postByVaultaccountid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The vault account to unhide" - } - ], - "description": "Unhide a vault account in the console.\n\nMakes a hidden vault account visible in web console view." - }, - { - "method": "post", - "path": "/vault/accounts/{vaultAccountId}/{assetId}/activate", - "name": "vault_accounts_activate_postByVaultaccountidAndAssetid", - "parameters": [ - { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account to return, or 'default' for the default vault account" - }, - { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "address": { - "type": "string" - }, - "legacyAddress": { - "type": "string" - }, - "enterpriseAddress": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "eosAccountName": { - "type": "string" - }, - "status": { - "type": "string" - }, - "activationTxId": { - "type": "string" - } - } - }, - "description": "Activate a wallet in a vault account.\n\nInitiates activation for a wallet in a vault account." - }, - { - "method": "post", - "path": "/vault/accounts/{vaultAccountId}/set_customer_ref_id", - "name": "vault_accounts_set_customer_ref_id_postByVaultaccountid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The vault account ID" - }, - {} - ], - "description": "Set an AML/KYT customer reference ID for a vault account.\n\nAssigns an AML/KYT customer reference ID for the vault account." - }, - { - "method": "post", - "path": "/vault/accounts/{vaultAccountId}/set_auto_fuel", - "name": "vault_accounts_set_auto_fuel_postByVaultaccountid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The vault account ID" - }, - {} - ], - "description": "Turn autofueling on or off.\n\nSets the autofueling property of the vault account to enabled or disabled." - }, - { - "method": "get", - "path": "/vault/accounts/{vaultAccountId}/{assetId}", - "name": "vault_accounts_getByVaultaccountidAndAssetid", - "parameters": [ - { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account to return" - }, - { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "total": { - "description": "The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.", - "type": "string" - }, - "balance": { - "deprecated": true, - "description": "Deprecated - replaced by \"total\"", - "type": "string" - }, - "available": { - "description": "Funds available for transfer. Equals the blockchain balance minus any locked amounts", - "type": "string" - }, - "pending": { - "description": "The cumulative balance of all transactions pending to be cleared", - "type": "string" - }, - "frozen": { - "description": "The cumulative frozen balance", - "type": "string" - }, - "lockedAmount": { - "description": "Funds in outgoing transactions that are not yet published to the network", - "type": "string" - }, - "staked": { - "description": "Staked balance", - "type": "string" - }, - "totalStakedCPU": { - "type": "number", - "description": "Deprecated" - }, - "totalStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedCPU": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundCPU": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundNetwork": { - "type": "string", - "description": "Deprecated" - }, - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - }, - "rewardsInfo": { - "type": "object", - "properties": { - "pendingRewards": { - "description": "Amount that is pending for rewards", - "type": "string" - } - } - } - } - }, - "description": "Get the asset balance for a vault account.\n\nReturns a wallet for a specific asset of a vault account." - }, - { - "method": "post", - "path": "/vault/accounts/{vaultAccountId}/{assetId}", - "name": "vault_accounts_postByVaultaccountidAndAssetid", - "parameters": [ - { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account to return, or 'default' for the default vault account" - }, - { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - }, - {} - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "address": { - "type": "string" - }, - "legacyAddress": { - "type": "string" - }, - "enterpriseAddress": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "eosAccountName": { - "type": "string" - }, - "status": { - "type": "string" - }, - "activationTxId": { - "type": "string" - } - } - }, - "description": "Create a new wallet.\n\nCreates a wallet for a specific asset in a vault account." - }, - { - "method": "post", - "path": "/vault/accounts/{vaultAccountId}/{assetId}/balance", - "name": "vault_accounts_balance_postByVaultaccountidAndAssetid", - "parameters": [ - { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account to return" - }, - { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - }, - { - "type": "object" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "total": { - "description": "The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.", - "type": "string" - }, - "balance": { - "deprecated": true, - "description": "Deprecated - replaced by \"total\"", - "type": "string" - }, - "available": { - "description": "Funds available for transfer. Equals the blockchain balance minus any locked amounts", - "type": "string" - }, - "pending": { - "description": "The cumulative balance of all transactions pending to be cleared", - "type": "string" - }, - "frozen": { - "description": "The cumulative frozen balance", - "type": "string" - }, - "lockedAmount": { - "description": "Funds in outgoing transactions that are not yet published to the network", - "type": "string" - }, - "staked": { - "description": "Staked balance", - "type": "string" - }, - "totalStakedCPU": { - "type": "number", - "description": "Deprecated" - }, - "totalStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedCPU": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundCPU": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundNetwork": { - "type": "string", - "description": "Deprecated" - }, - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - }, - "rewardsInfo": { - "type": "object", - "properties": { - "pendingRewards": { - "description": "Amount that is pending for rewards", - "type": "string" - } - } - } - } - }, - "description": "Refresh asset balance data.\n\nUpdates the balance of a specific asset in a vault account." - }, - { - "method": "get", - "path": "/vault/accounts/{vaultAccountId}/{assetId}/addresses", - "name": "vault_accounts_addresses_getByVaultaccountidAndAssetid", - "parameters": [ - { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account to return" - }, - { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - } - ], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "assetId": { - "type": "string", - "x-fb-entity": "asset" - }, - "address": { - "type": "string" - }, - "description": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "type": { - "type": "string" - }, - "customerRefId": { - "type": "string" - }, - "addressFormat": { - "type": "string", - "enum": [ - "SEGWIT", - "LEGACY" - ] - }, - "legacyAddress": { - "type": "string" - }, - "enterpriseAddress": { - "type": "string" - }, - "bip44AddressIndex": { - "type": "integer" - }, - "userDefined": { - "type": "boolean" - } - } - } - }, - "description": "Get asset addresses.\n\nLists all addresses for specific asset of vault account." - }, - { - "method": "post", - "path": "/vault/accounts/{vaultAccountId}/{assetId}/addresses", - "name": "vault_accounts_addresses_postByVaultaccountidAndAssetid", - "parameters": [ - { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account to return" - }, - { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - }, - {} - ], - "output": { - "type": "object", - "properties": { - "address": { - "type": "string" - }, - "legacyAddress": { - "type": "string" - }, - "enterpriseAddress": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "bip44AddressIndex": { - "type": "integer" - } - } - }, - "description": "Create new asset deposit address.\n\nCreates a new deposit address for an asset of a vault account." - }, - { - "method": "get", - "path": "/vault/accounts/{vaultAccountId}/{assetId}/max_spendable_amount", - "name": "vault_accounts_max_spendable_amount_getByVaultaccountidAndAssetid", - "parameters": [ - { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account, or 'default' for the default vault account" - }, - { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - }, - { - "type": "object", - "properties": { - "manualSignging": { - "type": "boolean", - "description": "False by default. The maximum number of inputs depends if the transaction will be signed by an automated co-signer server or on a mobile device." - } - }, - "required": [] - } - ], - "description": "Get the maximum spendable amount in a single transaction.\n\nGet the maximum amount of a particular asset that can be spent in a single transaction from a specified vault account (UTXO assets only, with a limitation on number of inputs embedded). Send several transactions if you want to spend more than the maximum spendable amount." - }, - { - "method": "put", - "path": "/vault/accounts/{vaultAccountId}/{assetId}/addresses/{addressId}", - "name": "vault_accounts_addresses_putByVaultaccountidAndAssetidAndAddressid", - "parameters": [ - { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account" - }, - { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - }, - { - "type": "string", - "description": "The address for which to add a description. For XRP, use
:, for all other assets, use only the address" - }, - {} - ], - "description": "Update address description.\n\nUpdates the description of an existing address of an asset in a vault account." - }, - { - "method": "post", - "path": "/vault/accounts/{vaultAccountId}/{assetId}/addresses/{addressId}/set_customer_ref_id", - "name": "vault_accounts_addresses_set_customer_ref_id_postByVaultaccountidAndAssetidAndAddressid", - "parameters": [ - { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account" - }, - { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - }, - { - "type": "string", - "description": "The address for which to add a description. For XRP, use
:, for all other assets, use only the address" - }, - {} - ], - "description": "Assign AML customer reference ID.\n\nSets an AML/KYT customer reference ID for a specific address." - }, - { - "method": "post", - "path": "/vault/accounts/{vaultAccountId}/{assetId}/addresses/{addressId}/create_legacy", - "name": "vault_accounts_addresses_create_legacy_postByVaultaccountidAndAssetidAndAddressid", - "parameters": [ - { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account" - }, - { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - }, - { - "type": "string", - "description": "The segwit address to translate" - } - ], - "output": { - "type": "object", - "properties": { - "address": { - "type": "string" - }, - "legacyAddress": { - "type": "string" - }, - "enterpriseAddress": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "bip44AddressIndex": { - "type": "integer" - } - } - }, - "description": "Convert a segwit address to legacy format.\n\nConverts an existing segwit address to the legacy format." - }, - { - "method": "get", - "path": "/vault/accounts/{vaultAccountId}/{assetId}/unspent_inputs", - "name": "vault_accounts_unspent_inputs_getByVaultaccountidAndAssetid", - "parameters": [ - { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account", - "description": "The ID of the vault account" - }, - { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - } - ], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "input": { - "type": "object", - "properties": { - "txHash": { - "type": "string" - }, - "index": { - "type": "number" - } - } - }, - "address": { - "type": "string" - }, - "amount": { - "type": "string" - }, - "confirmations": { - "type": "number" - }, - "status": { - "type": "string" - } - } - } - }, - "description": "Get UTXO unspent inputs information.\n\nReturns unspent inputs information of an asset in a vault account." - }, - { - "method": "get", - "path": "/vault/public_key_info/", - "name": "vault_public_key_info_get", - "parameters": [ - { - "type": "object", - "properties": { - "derivationPath": { - "type": "string" - }, - "algorithm": { - "type": "string" - }, - "compressed": { - "type": "boolean" - } - }, - "required": [ - "derivationPath", - "algorithm" - ] - } - ], - "output": { - "type": "object", - "properties": { - "algorithm": { - "type": "string" - }, - "derivationPath": { - "type": "array", - "items": { - "type": "number" - } - }, - "publicKey": { - "type": "string" - } - } - }, - "description": "Get the public key information.\n\nGets the public key information based on derivation path and signing algorithm." - }, - { - "method": "get", - "path": "/vault/accounts/{vaultAccountId}/{assetId}/{change}/{addressIndex}/public_key_info", - "name": "vault_accounts_public_key_info_getByVaultaccountidAndAssetidAndChangeAndAddressindex", - "parameters": [ - { - "type": "string", - "format": "numeric", - "x-fb-entity": "vault_account" - }, - { - "type": "string", - "x-fb-entity": "asset" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "object", - "properties": { - "compressed": { - "type": "boolean" - } - }, - "required": [] - } - ], - "output": { - "type": "object", - "properties": { - "algorithm": { - "type": "string" - }, - "derivationPath": { - "type": "array", - "items": { - "type": "number" - } - }, - "publicKey": { - "type": "string" - } - } - }, - "description": "Get the public key for a vault account.\n\nGets the public key information for the vault account." - }, - { - "method": "get", - "path": "/vault/assets", - "name": "vault_assets_get", - "parameters": [ - { - "type": "object", - "properties": { - "accountNamePrefix": { - "type": "string" - }, - "accountNameSuffix": { - "type": "string" - } - }, - "required": [] - } - ], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "total": { - "description": "The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.", - "type": "string" - }, - "balance": { - "deprecated": true, - "description": "Deprecated - replaced by \"total\"", - "type": "string" - }, - "available": { - "description": "Funds available for transfer. Equals the blockchain balance minus any locked amounts", - "type": "string" - }, - "pending": { - "description": "The cumulative balance of all transactions pending to be cleared", - "type": "string" - }, - "frozen": { - "description": "The cumulative frozen balance", - "type": "string" - }, - "lockedAmount": { - "description": "Funds in outgoing transactions that are not yet published to the network", - "type": "string" - }, - "staked": { - "description": "Staked balance", - "type": "string" - }, - "totalStakedCPU": { - "type": "number", - "description": "Deprecated" - }, - "totalStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedCPU": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundCPU": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundNetwork": { - "type": "string", - "description": "Deprecated" - }, - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - }, - "rewardsInfo": { - "type": "object", - "properties": { - "pendingRewards": { - "description": "Amount that is pending for rewards", - "type": "string" - } - } - } - } - } - }, - "description": "Get asset balance for chosen assets.\n\nGets the assets amount summary for all accounts or filtered accounts." - }, - { - "method": "get", - "path": "/vault/assets/{assetId}", - "name": "vault_assets_getByAssetid", - "parameters": [ - { - "type": "string", - "x-fb-entity": "asset" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "total": { - "description": "The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.", - "type": "string" - }, - "balance": { - "deprecated": true, - "description": "Deprecated - replaced by \"total\"", - "type": "string" - }, - "available": { - "description": "Funds available for transfer. Equals the blockchain balance minus any locked amounts", - "type": "string" - }, - "pending": { - "description": "The cumulative balance of all transactions pending to be cleared", - "type": "string" - }, - "frozen": { - "description": "The cumulative frozen balance", - "type": "string" - }, - "lockedAmount": { - "description": "Funds in outgoing transactions that are not yet published to the network", - "type": "string" - }, - "staked": { - "description": "Staked balance", - "type": "string" - }, - "totalStakedCPU": { - "type": "number", - "description": "Deprecated" - }, - "totalStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedCPU": { - "type": "string", - "description": "Deprecated" - }, - "selfStakedNetwork": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundCPU": { - "type": "string", - "description": "Deprecated" - }, - "pendingRefundNetwork": { - "type": "string", - "description": "Deprecated" - }, - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - }, - "rewardsInfo": { - "type": "object", - "properties": { - "pendingRewards": { - "description": "Amount that is pending for rewards", - "type": "string" - } - } - } - } - }, - "description": "Get vault balance by asset.\n\nGets the vault balance summary for an asset." - }, - { - "method": "get", - "path": "/exchange_accounts", - "name": "exchange_accounts_get", - "parameters": [], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "BINANCE", - "BINANCEUS", - "BITFINEX", - "BITHUMB", - "BITMEX", - "BITSO", - "BITSTAMP", - "BITTREX", - "CIRCLE", - "COINBASEPRO", - "COINMETRO", - "COINSPRO", - "CRYPTOCOM", - "DERIBIT", - "FTX", - "FIXUS", - "GEMINI", - "HITBTC", - "HUOBI", - "KORBIT", - "KRAKEN", - "LIQUID", - "POLONIEX", - "OKCOIN", - "OKEX", - "SEEDCX" - ] - }, - "name": { - "type": "string", - "description": "Display name of the exchange account" - }, - "status": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "total": { - "type": "string" - }, - "available": { - "type": "string" - } - } - } - }, - "tradingAccounts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "name": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "total": { - "type": "string" - }, - "available": { - "type": "string" - } - } - } - } - } - } - }, - "isSubaccount": { - "type": "boolean", - "description": "True if the account is a subaccount in an exchange" - }, - "mainAccountId": { - "description": "if the account is a sub-account, the ID of the main account", - "type": "string" - } - } - } - }, - "description": "List exchange accounts.\n\nReturns all exchange accounts." - }, - { - "method": "get", - "path": "/exchange_accounts/{exchangeAccountId}", - "name": "exchange_accounts_getByExchangeaccountid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the exchange account to return" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "BINANCE", - "BINANCEUS", - "BITFINEX", - "BITHUMB", - "BITMEX", - "BITSO", - "BITSTAMP", - "BITTREX", - "CIRCLE", - "COINBASEPRO", - "COINMETRO", - "COINSPRO", - "CRYPTOCOM", - "DERIBIT", - "FTX", - "FIXUS", - "GEMINI", - "HITBTC", - "HUOBI", - "KORBIT", - "KRAKEN", - "LIQUID", - "POLONIEX", - "OKCOIN", - "OKEX", - "SEEDCX" - ] - }, - "name": { - "type": "string", - "description": "Display name of the exchange account" - }, - "status": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "total": { - "type": "string" - }, - "available": { - "type": "string" - } - } - } - }, - "tradingAccounts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "name": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "total": { - "type": "string" - }, - "available": { - "type": "string" - } - } - } - } - } - } - }, - "isSubaccount": { - "type": "boolean", - "description": "True if the account is a subaccount in an exchange" - }, - "mainAccountId": { - "description": "if the account is a sub-account, the ID of the main account", - "type": "string" - } - } - }, - "description": "Find a specific exchange account.\n\nReturns an exchange account by ID." - }, - { - "method": "post", - "path": "/exchange_accounts/{exchangeAccountId}/internal_transfer", - "name": "exchange_accounts_internal_transfer_postByExchangeaccountid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the exchange account to return" - }, - {} - ], - "description": "Internal tranfer for exchange accounts.\n\nTransfers funds between trading accounts under the same exchange account." - }, - { - "method": "post", - "path": "/exchange_accounts/{exchangeAccountId}/convert", - "name": "exchange_accounts_convert_postByExchangeaccountid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the exchange account. Please make sure the exchange supports conversions. To find the ID of your exchange account, use GET/exchange_accounts." - }, - {} - ], - "description": "Convert exchange account funds from the source asset to the destination asset. Coinbase (USD to USDC, USDC to USD) and Bitso (MXN to USD) are supported conversions." - }, - { - "method": "get", - "path": "/exchange_accounts/{exchangeAccountId}/{assetId}", - "name": "exchange_accounts_getByExchangeaccountidAndAssetid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the exchange account to return" - }, - { - "type": "string", - "minimum": 1, - "description": "The ID of the asset to return" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "total": { - "type": "string" - }, - "available": { - "type": "string" - } - } - }, - "description": "Find an asset for an exchange account.\n\nReturns an asset for an exchange account." - }, - { - "method": "get", - "path": "/fiat_accounts", - "name": "fiat_accounts_get", - "parameters": [], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "BLINC" - ] - }, - "name": { - "type": "string", - "description": "Display name of the fiat account" - }, - "address": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - } - } - } - } - } - } - }, - "description": "List fiat accounts.\n\nReturns all fiat accounts." - }, - { - "method": "get", - "path": "/fiat_accounts/{accountId}", - "name": "fiat_accounts_getByAccountid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the fiat account to return" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "BLINC" - ] - }, - "name": { - "type": "string", - "description": "Display name of the fiat account" - }, - "address": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - } - } - } - } - } - }, - "description": "Find a specific fiat account.\n\nReturns a fiat account by ID." - }, - { - "method": "post", - "path": "/fiat_accounts/{accountId}/redeem_to_linked_dda", - "name": "fiat_accounts_redeem_to_linked_dda_postByAccountid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the fiat account to use" - }, - {} - ], - "description": "Redeem funds to DDA.\n\nRedeems funds to the linked DDA." - }, - { - "method": "post", - "path": "/fiat_accounts/{accountId}/deposit_from_linked_dda", - "name": "fiat_accounts_deposit_from_linked_dda_postByAccountid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the fiat account to use" - }, - {} - ], - "description": "Deposit funds from DDA.\n\nDeposits funds from the linked DDA." - }, - { - "method": "get", - "path": "/network_connections", - "name": "network_connections_get", - "parameters": [], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "localChannel": { - "deprecated": true, - "description": "Deprecated - Replaced by `localNetworkId`", - "type": "object", - "properties": { - "networkId": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "remoteChannel": { - "deprecated": true, - "description": "Deprecated - Replaced by `remoteNetworkId`", - "type": "object", - "properties": { - "networkId": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "localNetworkId": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "id", - "name" - ] - }, - "remoteNetworkId": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "id", - "name" - ] - }, - "routingPolicy": { - "type": "object", - "properties": { - "crypto": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "VAULT", - "EXCHANGE" - ], - "description": "The type of destination account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the destination account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "signet": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - } - ] - }, - "signet_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - } - } - } - }, - "required": [ - "id", - "localNetworkId", - "remoteNetworkId", - "routingPolicy", - "status" - ] - } - }, - "description": "List network connections.\n\nReturns all network connections.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "post", - "path": "/network_connections", - "name": "network_connections_post", - "parameters": [ - { - "type": "object", - "properties": { - "localNetworkId": { - "type": "string", - "description": "The network ID of the profile trying to create the connection." - }, - "remoteNetworkId": { - "type": "string", - "description": "The network ID the profile is attempting to connect to." - }, - "routingPolicy": { - "type": "object", - "properties": { - "crypto": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "VAULT", - "EXCHANGE" - ], - "description": "The type of destination account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the destination account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "signet": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - } - ] - }, - "signet_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - } - } - } - }, - "required": [ - "localNetworkId", - "remoteNetworkId" - ] - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "localChannel": { - "deprecated": true, - "description": "Deprecated - Replaced by `localNetworkId`", - "type": "object", - "properties": { - "networkId": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "remoteChannel": { - "deprecated": true, - "description": "Deprecated - Replaced by `remoteNetworkId`", - "type": "object", - "properties": { - "networkId": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "localNetworkId": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "id", - "name" - ] - }, - "remoteNetworkId": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "id", - "name" - ] - }, - "routingPolicy": { - "type": "object", - "properties": { - "crypto": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "VAULT", - "EXCHANGE" - ], - "description": "The type of destination account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the destination account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "signet": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - } - ] - }, - "signet_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - } - } - } - }, - "required": [ - "id", - "localNetworkId", - "remoteNetworkId", - "routingPolicy", - "status" - ] - }, - "description": "Creates a new network connection.\n\nInitiates a new network connection.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "patch", - "path": "/network_connections/{connectionId}/set_routing_policy", - "name": "network_connections_set_routing_policy_patchByConnectionid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the network connection" - }, - {} - ], - "output": {}, - "description": "Update network connection routing policy.\n\nUpdates an existing network connection's routing policy.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "get", - "path": "/network_connections/{connectionId}/is_third_party_routing/{assetType}", - "name": "network_connections_is_third_party_routing_getByConnectionidAndAssettype", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the network connection" - }, - { - "type": "string", - "enum": [ - "CRYPTO", - "SIGNET", - "SEN", - "SIGNET_TEST", - "SEN_TEST" - ], - "description": "The destination asset type" - } - ], - "output": {}, - "description": "Retrieve third-party network routing validation by asset type.\n\nThe Fireblocks Network allows for flexibility around incoming deposits. A receiver can receive network deposits to locations other than Fireblocks. This endpoint validates whether future transactions are routed to the displayed recipient or to a 3rd party." - }, - { - "method": "get", - "path": "/network_connections/{connectionId}", - "name": "network_connections_getByConnectionid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the connection" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "localChannel": { - "deprecated": true, - "description": "Deprecated - Replaced by `localNetworkId`", - "type": "object", - "properties": { - "networkId": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "remoteChannel": { - "deprecated": true, - "description": "Deprecated - Replaced by `remoteNetworkId`", - "type": "object", - "properties": { - "networkId": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "localNetworkId": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "id", - "name" - ] - }, - "remoteNetworkId": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "id", - "name" - ] - }, - "routingPolicy": { - "type": "object", - "properties": { - "crypto": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "VAULT", - "EXCHANGE" - ], - "description": "The type of destination account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the destination account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "signet": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - } - ] - }, - "signet_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "DEFAULT" - ], - "description": "The network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - } - } - } - }, - "required": [ - "id", - "localNetworkId", - "remoteNetworkId", - "routingPolicy", - "status" - ] - }, - "description": "Get a network connection.\n\nGets a network connection by ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "delete", - "path": "/network_connections/{connectionId}", - "name": "network_connections_eraseByConnectionid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the network connection to delete" - } - ], - "output": {}, - "description": "Deletes a network connection by ID.\n\nDeletes an existing network connection specified by its connection ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "get", - "path": "/network_ids", - "name": "network_ids_get", - "parameters": [], - "output": { - "type": "array", - "items": {} - }, - "description": "Returns all network IDs, both local IDs and discoverable remote IDs.\n\nRetrieves a list of all local and discoverable remote network IDs.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "post", - "path": "/network_ids", - "name": "network_ids_post", - "parameters": [ - {} - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "routingPolicy": { - "type": "object", - "properties": { - "crypto": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "VAULT", - "EXCHANGE" - ], - "description": "The type of destination account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the destination account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "signet": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - } - ] - }, - "signet_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - } - ] - } - } - }, - "isDiscoverable": { - "type": "boolean", - "description": "The specific network is discoverable." - } - } - }, - "description": "Creates a new Network ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "get", - "path": "/network_ids/{networkId}", - "name": "network_ids_getByNetworkid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the network" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "routingPolicy": { - "type": "object", - "properties": { - "crypto": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "VAULT", - "EXCHANGE" - ], - "description": "The type of destination account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the destination account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "signet": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - } - ] - }, - "sen_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - } - ] - }, - "signet_test": { - "oneOf": [ - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "NONE" - ], - "description": "No network routing logic." - } - }, - "required": [ - "scheme" - ] - }, - { - "type": "object", - "properties": { - "scheme": { - "type": "string", - "enum": [ - "CUSTOM" - ], - "description": "The network routing logic." - }, - "dstType": { - "type": "string", - "enum": [ - "FIAT_ACCOUNT" - ], - "description": "The fiat account the funds are being sent to." - }, - "dstId": { - "type": "string", - "description": "The ID of the fiat account the funds are being sent to." - } - }, - "required": [ - "scheme", - "dstType", - "dstId" - ] - } - ] - } - } - }, - "isDiscoverable": { - "type": "boolean", - "description": "The specific network is discoverable." - } - } - }, - "description": "Returns specific network ID.\n\nRetrieves a network by its ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "delete", - "path": "/network_ids/{networkId}", - "name": "network_ids_eraseByNetworkid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the network" - } - ], - "output": {}, - "description": "Deletes specific network ID.\n\nDeletes a network by its ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "patch", - "path": "/network_ids/{networkId}/set_routing_policy", - "name": "network_ids_set_routing_policy_patchByNetworkid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the network" - }, - {} - ], - "output": {}, - "description": "Update network id routing policy.\n\nUpdates the routing policy of a specified network ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "patch", - "path": "/network_ids/{networkId}/set_discoverability", - "name": "network_ids_set_discoverability_patchByNetworkid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the network" - }, - {} - ], - "output": {}, - "description": "Update network ID's discoverability.\n\nUpdate whether or not the network ID is discoverable by others.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "patch", - "path": "/network_ids/{networkId}/set_name", - "name": "network_ids_set_name_patchByNetworkid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the network" - }, - {} - ], - "output": {}, - "description": "Update network ID's name.\n\nUpdates name of a specified network ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n" - }, - { - "method": "get", - "path": "/internal_wallets", - "name": "internal_wallets_get", - "parameters": [], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "customerRefId": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - } - } - }, - "required": [ - "id", - "name", - "status" - ] - } - }, - "description": "List internal wallets.\n\nGets a list of internal wallets.\n\n**Note**: BTC-based assets belonging to whitelisted addresses cannot be retrieved between 00:00 UTC and 00:01 UTC daily due to third-party provider, Blockchair, being unavailable for this 60 second period. Please wait until the next minute to retrieve BTC-based assets.\n" - }, - { - "method": "post", - "path": "/internal_wallets", - "name": "internal_wallets_post", - "parameters": [ - {} - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "customerRefId": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - } - } - }, - "required": [ - "id", - "name", - "status" - ] - }, - "description": "Create an internal wallet.\n\nCreates a new internal wallet with the requested name." - }, - { - "method": "get", - "path": "/internal_wallets/{walletId}", - "name": "internal_wallets_getByWalletid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the wallet to return" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "customerRefId": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - } - } - }, - "required": [ - "id", - "name", - "status" - ] - }, - "description": "Get assets for internal wallet.\n\nReturns all assets in an internal wallet by ID." - }, - { - "method": "delete", - "path": "/internal_wallets/{walletId}", - "name": "internal_wallets_eraseByWalletid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the wallet to delete" - } - ], - "description": "Delete an internal wallet.\n\nDeletes an internal wallet by ID." - }, - { - "method": "post", - "path": "/internal_wallets/{walletId}/set_customer_ref_id", - "name": "internal_wallets_set_customer_ref_id_postByWalletid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The wallet ID" - }, - {} - ], - "description": "Set an AML/KYT customer reference ID for an internal wallet.\n\nSets an AML/KYT customer reference ID for the specific internal wallet." - }, - { - "method": "get", - "path": "/internal_wallets/{walletId}/{assetId}", - "name": "internal_wallets_getByWalletidAndAssetid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the wallet" - }, - { - "type": "string", - "minimum": 1, - "x-fb-entity": "asset", - "description": "The ID of the asset to return" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - }, - "description": "Get an asset from an internal wallet.\n\nReturns information for an asset in an internal wallet." - }, - { - "method": "post", - "path": "/internal_wallets/{walletId}/{assetId}", - "name": "internal_wallets_postByWalletidAndAssetid", - "parameters": [ - { - "type": "string", - "description": "The ID of the wallet" - }, - { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset to add" - }, - {} - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - }, - "description": "Add an asset to an internal wallet.\n\nAdds an asset to an existing internal wallet." - }, - { - "method": "delete", - "path": "/internal_wallets/{walletId}/{assetId}", - "name": "internal_wallets_eraseByWalletidAndAssetid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the wallet" - }, - { - "type": "string", - "minimum": 1, - "x-fb-entity": "asset", - "description": "The ID of the asset to delete" - } - ], - "description": "Delete a whitelisted address from an internal wallet.\n\nDeletes a whitelisted address (for an asset) from an internal wallet." - }, - { - "method": "get", - "path": "/external_wallets", - "name": "external_wallets_get", - "parameters": [], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "customerRefId": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - } - } - }, - "required": [ - "id", - "name", - "status" - ] - } - }, - "description": "List external wallets.\n\nGets a list of external wallets under the workspace." - }, - { - "method": "post", - "path": "/external_wallets", - "name": "external_wallets_post", - "parameters": [ - {} - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "customerRefId": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - } - } - }, - "required": [ - "id", - "name", - "status" - ] - }, - "description": "Create an external wallet.\n\nCreates a new external wallet with the requested name." - }, - { - "method": "get", - "path": "/external_wallets/{walletId}", - "name": "external_wallets_getByWalletid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the wallet to return" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "customerRefId": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - } - } - }, - "required": [ - "id", - "name", - "status" - ] - }, - "description": "Find an external wallet.\n\nReturns an external wallet by ID." - }, - { - "method": "delete", - "path": "/external_wallets/{walletId}", - "name": "external_wallets_eraseByWalletid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the wallet to delete" - } - ], - "description": "Delete an external wallet.\n\nDeletes an external wallet by ID." - }, - { - "method": "post", - "path": "/external_wallets/{walletId}/set_customer_ref_id", - "name": "external_wallets_set_customer_ref_id_postByWalletid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The wallet ID" - }, - {} - ], - "description": "Set an AML customer reference ID for an external wallet.\n\nSets an AML/KYT customer reference ID for the specific external wallet." - }, - { - "method": "get", - "path": "/external_wallets/{walletId}/{assetId}", - "name": "external_wallets_getByWalletidAndAssetid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the wallet" - }, - { - "type": "string", - "minimum": 1, - "x-fb-entity": "asset", - "description": "The ID of the asset to return" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - }, - "additionalInfo": { - "type": "array", - "items": { - "type": "object", - "properties": { - "accountHolderGivenName": { - "type": "string" - }, - "accountHolderSurname": { - "type": "string" - }, - "accountHolderCity": { - "type": "string" - }, - "accountHolderCountry": { - "type": "string" - }, - "accountHolderAddress1": { - "type": "string" - }, - "accountHolderAddress2": { - "type": "string" - }, - "accountHolderDistrict": { - "type": "string" - }, - "accountHolderPostalCode": { - "type": "string" - }, - "abaRoutingNumber": { - "type": "string" - }, - "abaAccountNumber": { - "type": "string" - }, - "abaCountry": { - "type": "string" - }, - "iban": { - "type": "string" - }, - "ibanCity": { - "type": "string" - }, - "ibanCountry": { - "type": "string" - }, - "speiClabe": { - "type": "string" - }, - "speiName": { - "type": "string" - } - } - } - } - } - }, - "description": "Get an asset from an external wallet.\n\nReturns an external wallet by wallet ID and asset ID." - }, - { - "method": "post", - "path": "/external_wallets/{walletId}/{assetId}", - "name": "external_wallets_postByWalletidAndAssetid", - "parameters": [ - { - "type": "string", - "description": "The ID of the wallet" - }, - { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset to add" - }, - {} - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - }, - "additionalInfo": { - "type": "array", - "items": { - "type": "object", - "properties": { - "accountHolderGivenName": { - "type": "string" - }, - "accountHolderSurname": { - "type": "string" - }, - "accountHolderCity": { - "type": "string" - }, - "accountHolderCountry": { - "type": "string" - }, - "accountHolderAddress1": { - "type": "string" - }, - "accountHolderAddress2": { - "type": "string" - }, - "accountHolderDistrict": { - "type": "string" - }, - "accountHolderPostalCode": { - "type": "string" - }, - "abaRoutingNumber": { - "type": "string" - }, - "abaAccountNumber": { - "type": "string" - }, - "abaCountry": { - "type": "string" - }, - "iban": { - "type": "string" - }, - "ibanCity": { - "type": "string" - }, - "ibanCountry": { - "type": "string" - }, - "speiClabe": { - "type": "string" - }, - "speiName": { - "type": "string" - } - } - } - } - } - }, - "description": "Add an asset to an external wallet.\n\nAdds an asset to an existing external wallet." - }, - { - "method": "delete", - "path": "/external_wallets/{walletId}/{assetId}", - "name": "external_wallets_eraseByWalletidAndAssetid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the wallet" - }, - { - "type": "string", - "minimum": 1, - "x-fb-entity": "asset", - "description": "The ID of the asset to delete" - } - ], - "description": "Delete an asset from an external wallet.\n\nDeletes an external wallet asset by ID." - }, - { - "method": "get", - "path": "/contracts", - "name": "contracts_get", - "parameters": [], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "customerRefId": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - } - } - }, - "required": [ - "id", - "name", - "status" - ] - } - }, - "description": "List contracts.\n\nGets a list of contracts." - }, - { - "method": "post", - "path": "/contracts", - "name": "contracts_post", - "parameters": [ - {} - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "customerRefId": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - } - } - }, - "required": [ - "id", - "name", - "status" - ] - }, - "description": "Create a contract.\n\nCreates a new contract." - }, - { - "method": "get", - "path": "/contracts/{contractId}", - "name": "contracts_getByContractid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the contract to return" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "customerRefId": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - } - } - } - } - }, - "required": [ - "id", - "name", - "status" - ] - }, - "description": "Find a specific contract.\n\nReturns a contract by ID." - }, - { - "method": "delete", - "path": "/contracts/{contractId}", - "name": "contracts_eraseByContractid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the contract to delete" - } - ], - "description": "Delete a contract.\n\nDeletes a contract by ID." - }, - { - "method": "get", - "path": "/contracts/{contractId}/{assetId}", - "name": "contracts_getByContractidAndAssetid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the contract" - }, - { - "type": "string", - "minimum": 1, - "x-fb-entity": "asset", - "description": "The ID of the asset to return" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - }, - "additionalInfo": { - "type": "array", - "items": { - "type": "object", - "properties": { - "accountHolderGivenName": { - "type": "string" - }, - "accountHolderSurname": { - "type": "string" - }, - "accountHolderCity": { - "type": "string" - }, - "accountHolderCountry": { - "type": "string" - }, - "accountHolderAddress1": { - "type": "string" - }, - "accountHolderAddress2": { - "type": "string" - }, - "accountHolderDistrict": { - "type": "string" - }, - "accountHolderPostalCode": { - "type": "string" - }, - "abaRoutingNumber": { - "type": "string" - }, - "abaAccountNumber": { - "type": "string" - }, - "abaCountry": { - "type": "string" - }, - "iban": { - "type": "string" - }, - "ibanCity": { - "type": "string" - }, - "ibanCountry": { - "type": "string" - }, - "speiClabe": { - "type": "string" - }, - "speiName": { - "type": "string" - } - } - } - } - } - }, - "description": "Find a contract asset.\n\nReturns a contract asset by ID." - }, - { - "method": "post", - "path": "/contracts/{contractId}/{assetId}", - "name": "contracts_postByContractidAndAssetid", - "parameters": [ - { - "type": "string", - "description": "The ID of the contract" - }, - { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset to add" - }, - {} - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_APPROVAL", - "APPROVED", - "CANCELLED", - "REJECTED", - "FAILED" - ] - }, - "address": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "activationTime": { - "type": "string" - }, - "additionalInfo": { - "type": "array", - "items": { - "type": "object", - "properties": { - "accountHolderGivenName": { - "type": "string" - }, - "accountHolderSurname": { - "type": "string" - }, - "accountHolderCity": { - "type": "string" - }, - "accountHolderCountry": { - "type": "string" - }, - "accountHolderAddress1": { - "type": "string" - }, - "accountHolderAddress2": { - "type": "string" - }, - "accountHolderDistrict": { - "type": "string" - }, - "accountHolderPostalCode": { - "type": "string" - }, - "abaRoutingNumber": { - "type": "string" - }, - "abaAccountNumber": { - "type": "string" - }, - "abaCountry": { - "type": "string" - }, - "iban": { - "type": "string" - }, - "ibanCity": { - "type": "string" - }, - "ibanCountry": { - "type": "string" - }, - "speiClabe": { - "type": "string" - }, - "speiName": { - "type": "string" - } - } - } - } - } - }, - "description": "Add an asset to a contract.\n\nAdds an asset to an existing contract." - }, - { - "method": "delete", - "path": "/contracts/{contractId}/{assetId}", - "name": "contracts_eraseByContractidAndAssetid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the contract" - }, - { - "type": "string", - "minimum": 1, - "x-fb-entity": "asset", - "description": "The ID of the asset to delete" - } - ], - "description": "Delete a contract asset.\n\nDeletes a contract asset by ID." - }, - { - "method": "get", - "path": "/supported_assets", - "name": "supported_assets_get", - "parameters": [], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "ALGO_ASSET", - "BASE_ASSET", - "BEP20", - "COMPOUND", - "ERC20", - "FIAT", - "SOL_ASSET", - "TRON_TRC20", - "XLM_ASSET", - "XDB_ASSET" - ] - }, - "contractAddress": { - "type": "string" - }, - "nativeAsset": { - "type": "string" - }, - "decimals": { - "type": "number" - } - }, - "required": [ - "id", - "name", - "type" - ] - } - }, - "description": "List all asset types supported by Fireblocks.\n\nReturns all asset types supported by Fireblocks." - }, - { - "method": "get", - "path": "/estimate_network_fee", - "name": "estimate_network_fee_get", - "parameters": [ - { - "type": "object", - "properties": { - "assetId": { - "type": "string", - "x-fb-entity": "asset", - "description": "The asset for which to estimate the fee" - } - }, - "required": [ - "assetId" - ] - } - ], - "output": { - "type": "object", - "properties": { - "low": { - "type": "object", - "properties": { - "feePerByte": { - "type": "string" - }, - "gasPrice": { - "type": "string" - }, - "networkFee": { - "type": "string" - }, - "baseFee": { - "description": "(optional) Base Fee according to EIP-1559 (ETH assets)", - "type": "string" - }, - "priorityFee": { - "description": "(optional) Priority Fee according to EIP-1559 (ETH assets)", - "type": "string" - } - } - }, - "medium": { - "type": "object", - "properties": { - "feePerByte": { - "type": "string" - }, - "gasPrice": { - "type": "string" - }, - "networkFee": { - "type": "string" - }, - "baseFee": { - "description": "(optional) Base Fee according to EIP-1559 (ETH assets)", - "type": "string" - }, - "priorityFee": { - "description": "(optional) Priority Fee according to EIP-1559 (ETH assets)", - "type": "string" - } - } - }, - "high": { - "type": "object", - "properties": { - "feePerByte": { - "type": "string" - }, - "gasPrice": { - "type": "string" - }, - "networkFee": { - "type": "string" - }, - "baseFee": { - "description": "(optional) Base Fee according to EIP-1559 (ETH assets)", - "type": "string" - }, - "priorityFee": { - "description": "(optional) Priority Fee according to EIP-1559 (ETH assets)", - "type": "string" - } - } - } - }, - "required": [ - "low", - "medium", - "high" - ] - }, - "description": "Estimate the required fee for an asset.\n\nGets the estimated required fee for an asset. For UTXO based assets, the response will contain the suggested fee per byte, for ETH/ETC based assets, the suggested gas price, and for XRP/XLM, the transaction fee." - }, - { - "method": "get", - "path": "/transactions/validate_address/{assetId}/{address}", - "name": "transactions_validate_address_getByAssetidAndAddress", - "parameters": [ - { - "type": "string", - "x-fb-entity": "asset", - "description": "The asset of the address" - }, - { - "type": "string", - "description": "The address to validate" - } - ], - "output": { - "type": "object", - "properties": { - "isValid": { - "type": "boolean" - }, - "isActive": { - "type": "boolean" - }, - "requiresTag": { - "type": "boolean" - } - } - }, - "description": "Validate destination address.\n\nChecks if an address is valid (for XRP, DOT, XLM, and EOS)." - }, - { - "method": "get", - "path": "/transactions", - "name": "transactions_get", - "parameters": [ - { - "type": "object", - "properties": { - "before": { - "type": "string", - "description": "Unix timestamp in milliseconds. Returns only transactions created before the specified date" - }, - "after": { - "type": "string", - "description": "Unix timestamp in milliseconds. Returns only transactions created after the specified date" - }, - "status": { - "type": "string", - "description": "You can filter by one of the statuses." - }, - "limit": { - "type": "integer", - "minimum": 1, - "default": 200, - "description": "Limits the number of results. If not provided, a limit of 200 will be used. The maximum allowed limit is 500" - }, - "sourceId": { - "type": "string", - "description": "The source ID of the transaction" - }, - "destId": { - "type": "string", - "description": "The destination ID of the transaction" - }, - "assets": { - "type": "string", - "description": "A list of assets to filter by, seperated by commas" - }, - "txHash": { - "type": "string", - "description": "Returns only results with a specified txHash" - }, - "sourceWalletId": { - "type": "string", - "description": "Returns only results where the source is a specific end user wallet" - }, - "destWalletId": { - "type": "string", - "description": "Returns only results where the destination is a specific end user wallet" - } - }, - "required": [] - } - ], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "ID of the transaction." - }, - "externalTxId": { - "type": "string", - "description": "Unique transaction ID provided by the user. Fireblocks highly recommends setting an `externalTxId` for every transaction created, to avoid submitting the same transaction twice." - }, - "status": { - "type": "string", - "description": "The primary status of the transaction. For details, see [Primary transaction statuses](https://developers.fireblocks.com/reference/primary-transaction-statuses)." - }, - "subStatus": { - "type": "string", - "description": "See [Transaction substatuses](https://developers.fireblocks.com/reference/transaction-substatuses) for the list of transaction sub statuses." - }, - "txHash": { - "type": "string", - "description": "The hash of the transaction on the blockchain.\n * This parameter exists if at least one of the following conditions is met:\n\n 1. The transaction’s source type is `UNKNOWN`, `WHITELISTED_ADDRESS`, `NETWORK_CONNECTION`, `ONE_TIME_ADDRESS`, `FIAT_ACCOUNT` or `GAS_STATION`.\n\n 2. The transaction’s source type is `VAULT` and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these statuses prior to changing to `FAILED` or `REJECTED`. In some instances, transactions in status `BROADCASTING` will include the txHash as well.\n\n 3. The transaction’s source type is `EXCHANGE_ACCOUNT` and the transaction’s destination type is `VAULT`, and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these status prior to changing to `FAILED`.\n \n\n* In addition, the following conditions must be met:\n\n 1. The asset is a crypto asset (not fiat).\n\n 2. The transaction operation is not RAW or `TYPED_MESSAGE`." - }, - "operation": { - "type": "string", - "enum": [ - "TRANSFER", - "BURN", - "CONTRACT_CALL", - "MINT", - "RAW", - "TYPED_MESSAGE", - "ENABLE_ASSET", - "STAKE", - "UNSTAKE", - "WITHDRAW", - "REDEEM_FROM_COMPOUND", - "SUPPLY_TO_COMPOUND" - ], - "description": "* `TRANSFER` - Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n* `ENABLE_ASSET` - Algorand, DigitalBits, Solana, and Stellar require an on-chain transaction to create an asset wallet and enable the deposit address. This transaction is automatically created when adding assets on these blockchains at a vault account.\n* `STAKE` - Assign assets to a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `UNSTAKE` - Remove assets from a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `WITHDRAW` - Transfer assets from a dedicated staking vault account to another address. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n\n **Note:** Fireblocks will rename this type from `WITHDRAW` to a different type name soon. There will be a 7-day notice regarding the new type name.\n\n* `SUPPLY_TO_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n* `REDEEM_FROM_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n" - }, - "note": { - "type": "string", - "description": "Custom note, not sent to the blockchain, that describes the transaction at your Fireblocks workspace." - }, - "assetId": { - "type": "string", - "description": "The ID of the asset to transfer, for `TRANSFER`, `MINT`, `BURN`, `ENABLE_ASSET`,`STAKE` ,`UNSTAKE` or `WITHDRAW` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)", - "x-fb-entity": "asset" - }, - "source": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "sourceAddress": { - "type": "string", - "description": "For account based assets only, the source address of the transaction.\n**Note:** If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the source address. In any other case, this parameter will be empty." - }, - "tag": { - "type": "string", - "description": "Source address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)." - }, - "destination": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "destinations": { - "type": "array", - "description": "The transaction’s destinations.\n**Note:** In case the transaction is sent to a single destination, the `destination` parameter is used instead of this.", - "items": { - "type": "object", - "properties": { - "destination": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "destinationAddress": { - "description": "Address where the asset was transferred." - }, - "destinationAddressDescription": { - "description": "Description of the address." - }, - "amount": { - "type": "string", - "description": "The amount to be sent to this destination." - }, - "amountUSD": { - "type": "string", - "description": "The USD value of the requested amount." - }, - "amlScreeningResult": { - "type": "object", - "description": "The result of the AML screening.", - "properties": { - "provider": { - "type": "string" - }, - "payload": { - "type": "object" - } - } - }, - "customerRefId": { - "description": "The ID for AML providers to associate the owner of funds with transactions." - }, - "authorizationInfo": { - "type": "object", - "description": "The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)", - "properties": { - "allowOperatorAsAuthorizer": { - "type": "boolean" - }, - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ] - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "th": { - "type": "number" - }, - "users": { - "type": "object", - "additionalProperties": { - "type": "string", - "enum": [ - "PENDING_AUTHORIZATION", - "APPROVED", - "REJECTED", - "NA" - ] - } - } - } - } - } - } - } - } - } - }, - "destinationAddress": { - "type": "string", - "description": "Address where the asset were transferred.\nNotes:\n - For [Multi destination transactions](https://support.fireblocks.io/hc/en-us/articles/360018447980-Multi-destination-transactions), this parameter will be empty. In this case, you should refer to the destinations field.\n - If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the destination address. In any other case, this parameter will be empty." - }, - "destinationAddressDescription": { - "type": "string", - "description": "Description of the address." - }, - "destinationTag": { - "type": "string", - "description": "Destination address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)." - }, - "contractCallDecodedData": { - "description": "Decoded data for `CONTRACT_CALL` operations. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for setting this parameter's value.", - "type": "object", - "properties": { - "contractName": { - "type": "string" - }, - "functionCalls": { - "type": "array", - "items": { - "type": "object" - } - } - } - }, - "amountInfo": { - "type": "object", - "description": "The details of the requested amount to transfer.", - "properties": { - "amount": { - "description": "If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount.", - "type": "string" - }, - "requestedAmount": { - "description": "The amount requested by the user.", - "type": "string" - }, - "netAmount": { - "description": "The net amount of the transaction, after fee deduction.", - "type": "string" - }, - "amountUSD": { - "description": "The USD value of the requested amount.", - "type": "string" - } - } - }, - "treatAsGrossAmount": { - "type": "boolean", - "description": "For transactions initiated via this Fireblocks workspace, when set to `true`, the fee is deducted from the requested amount.\n\n**Note**: This parameter can only be considered if a transaction's asset is a base asset, such as ETH or MATIC. If the asset can't be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account." - }, - "feeInfo": { - "type": "object", - "description": "Details of the transaction's fee.", - "properties": { - "networkFee": { - "description": "The fee paid to the network", - "type": "string" - }, - "serviceFee": { - "description": "The total fee deducted by the exchange from the actual requested amount (serviceFee = amount - netAmount)", - "type": "string" - }, - "gasPrice": { - "type": "string" - } - } - }, - "feeCurrency": { - "type": "string", - "description": "The asset which was withdrawn to pay the transaction fee, for example ETH for EVM-based blockchains, BTC for Tether Omni." - }, - "networkRecords": { - "type": "array", - "description": "In case a single transaction resulted with multiple transfers, for example a result of a contract call, then this parameter specifies each transfer that took place on the blockchain. In case of a single transfer transaction, this parameter is empty.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "destination": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "txHash": { - "type": "string" - }, - "networkFee": { - "type": "string" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset" - }, - "netAmount": { - "description": "The net amount of the transaction, after fee deduction", - "type": "string" - }, - "isDropped": { - "type": "boolean" - }, - "type": { - "type": "string" - }, - "destinationAddress": { - "type": "string" - }, - "sourceAddress": { - "type": "string" - }, - "amountUSD": { - "type": "string" - }, - "index": { - "type": "number" - }, - "rewardInfo": { - "type": "object", - "description": "This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.", - "properties": { - "srcRewards": { - "type": "string" - }, - "destRewards": { - "type": "string" - } - } - } - } - } - }, - "createdAt": { - "type": "number", - "description": "The transaction’s creation date and time, in unix timestamp." - }, - "lastUpdated": { - "type": "number", - "description": "The transaction’s last update date and time, in unix timestamp." - }, - "createdBy": { - "type": "string", - "description": "User ID of the initiator of the transaction." - }, - "signedBy": { - "type": "array", - "description": "User ID’s of the signers of the transaction.", - "items": { - "type": "string" - } - }, - "rejectedBy": { - "type": "string", - "description": "User ID of the user that rejected the transaction (in case it was rejected)." - }, - "authorizationInfo": { - "type": "object", - "description": "The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)", - "properties": { - "allowOperatorAsAuthorizer": { - "type": "boolean" - }, - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ] - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "th": { - "type": "number" - }, - "users": { - "type": "object", - "additionalProperties": { - "type": "string", - "enum": [ - "PENDING_AUTHORIZATION", - "APPROVED", - "REJECTED", - "NA" - ] - } - } - } - } - } - } - }, - "exchangeTxId": { - "type": "string", - "description": "If the transaction originated from an exchange, this is the ID of this transaction at the exchange." - }, - "customerRefId": { - "type": "string", - "description": "The ID for AML providers to associate the owner of funds with transactions." - }, - "amlScreeningResult": { - "type": "object", - "description": "The result of the AML screening.", - "properties": { - "provider": { - "type": "string" - }, - "payload": { - "type": "object" - } - } - }, - "extraParameters": { - "type": "object", - "properties": {}, - "description": "Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n" - }, - "signedMessages": { - "type": "object", - "description": "A list of signed messages returned for raw signing.", - "properties": { - "content": { - "type": "string" - }, - "algorithm": { - "type": "string", - "enum": [ - "MPC_ECDSA_SECP256K1", - "MPC_EDDSA_ED25519" - ] - }, - "derivationPath": { - "type": "array", - "items": { - "type": "number" - } - }, - "signature": { - "type": "object", - "properties": { - "fullSig": { - "type": "string" - }, - "r": { - "type": "string" - }, - "s": { - "type": "string" - }, - "v": { - "type": "number" - } - } - }, - "publicKey": { - "type": "string" - } - } - }, - "numOfConfirmations": { - "type": "number", - "description": "The number of confirmations of the transaction. The number will increase until the transaction will be considered completed according to the confirmation policy." - }, - "blockInfo": { - "type": "object", - "description": "The block hash and height of the block that this transaction was mined in.\n **Note**: If an outgoing transaction uses the destinations object with more than one value in the array, blockHash is set to null.", - "properties": { - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - } - } - }, - "index": { - "type": "number", - "description": "For UTXO based assets this is the vOut, for Ethereum based, this is the index of the event of the contract call.\n **Note:** This field is not returned if a transaction uses the `destinations` object with more than one value." - }, - "rewardInfo": { - "type": "object", - "description": "This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.", - "properties": { - "srcRewards": { - "type": "string" - }, - "destRewards": { - "type": "string" - } - } - }, - "systemMessages": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "WARN", - "BLOCK" - ] - }, - "message": { - "type": "string", - "description": "A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.", - "example": "Slow transaction processing. Outgoing transactions might be stuck." - } - } - }, - "addressType": { - "type": "string", - "enum": [ - "WHITELISTED", - "ONE_TIME" - ] - }, - "requestedAmount": { - "description": "The amount requested by the user. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "amount": { - "description": "If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "netAmount": { - "description": "The net amount of the transaction, after fee deduction. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "amountUSD": { - "description": "The USD value of the requested amount. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "nullable": true, - "deprecated": true - }, - "serviceFee": { - "description": "The total fee deducted by the exchange from the actual requested amount (`serviceFee` = `amount` - `netAmount`). Deprecated - please use the `feeInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "fee": { - "description": "Deprecated - please use the `feeInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "networkFee": { - "description": "The fee paid to the network. Deprecated - please use the `feeInfo` field for accuracy.", - "type": "number", - "deprecated": true - } - } - } - }, - "description": "List transaction history.\n\nLists the transaction history for your workspace." - }, - { - "method": "post", - "path": "/transactions", - "name": "transactions_post", - "parameters": [ - { - "type": "object", - "properties": { - "operation": { - "type": "string", - "enum": [ - "TRANSFER", - "BURN", - "CONTRACT_CALL", - "MINT", - "RAW", - "TYPED_MESSAGE" - ], - "description": "* `TRANSFER` - The default value for an operation. Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n" - }, - "note": { - "type": "string", - "description": "Custom note, not sent to the blockchain, to describe the transaction at your Fireblocks workspace.", - "example": "Ticket 123" - }, - "externalTxId": { - "type": "string", - "description": "An optional but highly recommended parameter. Fireblocks will reject future transactions with same ID. \n \nYou should set this to a unique ID representing the transaction, to avoid submitting the same transaction twice. This helps with cases where submitting the transaction responds with an error code due to Internet interruptions, but the transaction was actually sent and processed. To validate whether a transaction has been processed, [Find a specific transaction by external transaction ID](https://developers.fireblocks.com/reference/get_transactions-external-tx-id-externaltxid).\n \nThere is no specific format required for this parameter.", - "example": "00000000-0000-0000-0000-000000000000" - }, - "assetId": { - "type": "string", - "description": "The ID of the asset to transfer, for `TRANSFER`, `MINT` or `BURN` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)", - "x-fb-entity": "asset", - "example": "ETH" - }, - "source": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "VAULT_ACCOUNT", - "EXCHANGE_ACCOUNT", - "INTERNAL_WALLET", - "EXTERNAL_WALLET", - "NETWORK_CONNECTION", - "FIAT_ACCOUNT", - "COMPOUND", - "GAS_STATION", - "ONE_TIME_ADDRESS", - "UNKNOWN", - "END_USER_WALLET" - ] - }, - "subType": { - "type": "string", - "enum": [ - "BINANCE", - "BINANCEUS", - "BITFINEX", - "BITHUMB", - "BITMEX", - "BITSO", - "BITSTAMP", - "BITTREX", - "BLINC", - "BYBIT", - "CIRCLE", - "COINBASEEXCHANGE", - "COINBASEPRO", - "COINMETRO", - "COINSPRO", - "CRYPTOCOM", - "DERIBIT", - "GEMINI", - "HITBTC", - "HUOBI", - "INDEPENDENTRESERVE", - "KORBIT", - "KRAKEN", - "KRAKENINTL", - "KUCOIN", - "LIQUID", - "OKCOIN", - "OKEX", - "PAXOS", - "POLONIEX", - "External", - "Internal" - ] - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "walletId": { - "type": "string", - "format": "uuid" - } - }, - "required": [ - "type" - ] - }, - "destination": {}, - "destinations": { - "type": "array", - "description": "For UTXO based blockchains, you can send a single transaction to multiple destinations.", - "items": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "destination": {} - } - } - }, - "amount": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "0.02" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 0.02 - } - ], - "description": "For `TRANSFER` operations, the requested amount to transfer, in the asset’s unit. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "treatAsGrossAmount": { - "type": "boolean", - "description": "\"When set to `true`, the fee will be deducted from the requested amount.\"\n\n**Note**: This parameter can only be considered if a transaction’s asset is a base asset, such as ETH or MATIC. If the asset can’t be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account." - }, - "forceSweep": { - "type": "boolean", - "description": "For Polkadot, Kusama and Westend transactions only. When set to true, Fireblocks will empty the asset wallet.\n\n **Note:** If set to true when the source account is exactly 1 DOT, the transaction will fail. Any amount more or less than 1 DOT succeeds. This is a Polkadot blockchain limitation." - }, - "feeLevel": { - "type": "string", - "enum": [ - "LOW", - "MEDIUM", - "HIGH" - ], - "description": "For UTXO or EVM-based blockchains only. Defines the blockchain fee level which will be payed for the transaction. Alternatively, specific fee estimation parameters exist below." - }, - "fee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For UTXO-based blockchains, the fee per bytes in the asset’s smallest unit (Satoshi, Latoshi, etc.). For Ripple, the fee for the transaction. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "priorityFee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "2" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 2 - } - ], - "description": "For Ethereum-based blockchains only, the fee for EIP-1559 transaction pricing mechanism. Value is in Gwei. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "failOnLowFee": { - "type": "boolean", - "description": "When set to `true`, in case the current `MEDIUM` fee level is higher than the one specified in the transaction, the transaction will fail to avoid getting stuck with no confirmations." - }, - "maxFee": { - "description": "The maximum fee (gas price or fee per byte) that should be payed for the transaction. In case the current value of the requested `feeLevel` is higher than this requested maximum fee. Represented by a numeric string for accurate precision.", - "type": "string", - "example": "120" - }, - "gasLimit": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "21000" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 21000 - } - ], - "description": "For EVM-based blockchains only. Units of gas required to process the transaction. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "gasPrice": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For non-EIP-1559, EVM-based transactions. Price per gas unit (in Ethereum this is specified in Gwei). Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "networkFee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For EVM-based blockchains only. The total transaction fee in the blockchain’s largest unit. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated. - The transaction blockchain fee.\n- For Ethereum, you can't pass gasPrice, gasLimit and networkFee all together.\n- A numeric value representation is required." - }, - "replaceTxByHash": { - "type": "string", - "description": "For EVM-based blockchains only. In case a transaction is stuck, specify the hash of the stuck transaction to replace it by this transaction with a higher fee, or to replace it with this transaction with a zero fee and drop it from the blockchain.", - "example": "00000000-0000-0000-0000-000000000000" - }, - "extraParameters": { - "type": "object", - "properties": {}, - "description": "Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n" - }, - "customerRefId": { - "type": "string", - "description": "The ID for AML providers to associate the owner of funds with transactions.", - "example": "abcdef" - }, - "autoStaking": { - "type": "boolean", - "description": "This feature is no longer supported." - }, - "networkStaking": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "This feature is no longer supported." - }, - "cpuStaking": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "This feature is no longer supported." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The ID of the transaction." - }, - "status": { - "type": "string", - "description": "The primary status of the transaction. For details, see [Primary transaction statuses.] (https://developers.fireblocks.com/reference/primary-transaction-statuses)" - }, - "systemMessages": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "WARN", - "BLOCK" - ] - }, - "message": { - "type": "string", - "description": "A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.", - "example": "Slow transaction processing. Outgoing transactions might be stuck." - } - } - } - } - }, - "description": "Create a new transaction.\n\nCreates a new transaction." - }, - { - "method": "post", - "path": "/transactions/estimate_fee", - "name": "transactions_estimate_fee_post", - "parameters": [ - { - "type": "object", - "properties": { - "operation": { - "type": "string", - "enum": [ - "TRANSFER", - "BURN", - "CONTRACT_CALL", - "MINT", - "RAW", - "TYPED_MESSAGE" - ], - "description": "* `TRANSFER` - The default value for an operation. Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n" - }, - "note": { - "type": "string", - "description": "Custom note, not sent to the blockchain, to describe the transaction at your Fireblocks workspace.", - "example": "Ticket 123" - }, - "externalTxId": { - "type": "string", - "description": "An optional but highly recommended parameter. Fireblocks will reject future transactions with same ID. \n \nYou should set this to a unique ID representing the transaction, to avoid submitting the same transaction twice. This helps with cases where submitting the transaction responds with an error code due to Internet interruptions, but the transaction was actually sent and processed. To validate whether a transaction has been processed, [Find a specific transaction by external transaction ID](https://developers.fireblocks.com/reference/get_transactions-external-tx-id-externaltxid).\n \nThere is no specific format required for this parameter.", - "example": "00000000-0000-0000-0000-000000000000" - }, - "assetId": { - "type": "string", - "description": "The ID of the asset to transfer, for `TRANSFER`, `MINT` or `BURN` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)", - "x-fb-entity": "asset", - "example": "ETH" - }, - "source": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "VAULT_ACCOUNT", - "EXCHANGE_ACCOUNT", - "INTERNAL_WALLET", - "EXTERNAL_WALLET", - "NETWORK_CONNECTION", - "FIAT_ACCOUNT", - "COMPOUND", - "GAS_STATION", - "ONE_TIME_ADDRESS", - "UNKNOWN", - "END_USER_WALLET" - ] - }, - "subType": { - "type": "string", - "enum": [ - "BINANCE", - "BINANCEUS", - "BITFINEX", - "BITHUMB", - "BITMEX", - "BITSO", - "BITSTAMP", - "BITTREX", - "BLINC", - "BYBIT", - "CIRCLE", - "COINBASEEXCHANGE", - "COINBASEPRO", - "COINMETRO", - "COINSPRO", - "CRYPTOCOM", - "DERIBIT", - "GEMINI", - "HITBTC", - "HUOBI", - "INDEPENDENTRESERVE", - "KORBIT", - "KRAKEN", - "KRAKENINTL", - "KUCOIN", - "LIQUID", - "OKCOIN", - "OKEX", - "PAXOS", - "POLONIEX", - "External", - "Internal" - ] - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "walletId": { - "type": "string", - "format": "uuid" - } - }, - "required": [ - "type" - ] - }, - "destination": {}, - "destinations": { - "type": "array", - "description": "For UTXO based blockchains, you can send a single transaction to multiple destinations.", - "items": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "destination": {} - } - } - }, - "amount": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "0.02" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 0.02 - } - ], - "description": "For `TRANSFER` operations, the requested amount to transfer, in the asset’s unit. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "treatAsGrossAmount": { - "type": "boolean", - "description": "\"When set to `true`, the fee will be deducted from the requested amount.\"\n\n**Note**: This parameter can only be considered if a transaction’s asset is a base asset, such as ETH or MATIC. If the asset can’t be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account." - }, - "forceSweep": { - "type": "boolean", - "description": "For Polkadot, Kusama and Westend transactions only. When set to true, Fireblocks will empty the asset wallet.\n\n **Note:** If set to true when the source account is exactly 1 DOT, the transaction will fail. Any amount more or less than 1 DOT succeeds. This is a Polkadot blockchain limitation." - }, - "feeLevel": { - "type": "string", - "enum": [ - "LOW", - "MEDIUM", - "HIGH" - ], - "description": "For UTXO or EVM-based blockchains only. Defines the blockchain fee level which will be payed for the transaction. Alternatively, specific fee estimation parameters exist below." - }, - "fee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For UTXO-based blockchains, the fee per bytes in the asset’s smallest unit (Satoshi, Latoshi, etc.). For Ripple, the fee for the transaction. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "priorityFee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "2" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 2 - } - ], - "description": "For Ethereum-based blockchains only, the fee for EIP-1559 transaction pricing mechanism. Value is in Gwei. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "failOnLowFee": { - "type": "boolean", - "description": "When set to `true`, in case the current `MEDIUM` fee level is higher than the one specified in the transaction, the transaction will fail to avoid getting stuck with no confirmations." - }, - "maxFee": { - "description": "The maximum fee (gas price or fee per byte) that should be payed for the transaction. In case the current value of the requested `feeLevel` is higher than this requested maximum fee. Represented by a numeric string for accurate precision.", - "type": "string", - "example": "120" - }, - "gasLimit": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "21000" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 21000 - } - ], - "description": "For EVM-based blockchains only. Units of gas required to process the transaction. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "gasPrice": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For non-EIP-1559, EVM-based transactions. Price per gas unit (in Ethereum this is specified in Gwei). Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "networkFee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For EVM-based blockchains only. The total transaction fee in the blockchain’s largest unit. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated. - The transaction blockchain fee.\n- For Ethereum, you can't pass gasPrice, gasLimit and networkFee all together.\n- A numeric value representation is required." - }, - "replaceTxByHash": { - "type": "string", - "description": "For EVM-based blockchains only. In case a transaction is stuck, specify the hash of the stuck transaction to replace it by this transaction with a higher fee, or to replace it with this transaction with a zero fee and drop it from the blockchain.", - "example": "00000000-0000-0000-0000-000000000000" - }, - "extraParameters": { - "type": "object", - "properties": {}, - "description": "Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n" - }, - "customerRefId": { - "type": "string", - "description": "The ID for AML providers to associate the owner of funds with transactions.", - "example": "abcdef" - }, - "autoStaking": { - "type": "boolean", - "description": "This feature is no longer supported." - }, - "networkStaking": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "This feature is no longer supported." - }, - "cpuStaking": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "This feature is no longer supported." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "low": { - "type": "object", - "properties": { - "feePerByte": { - "type": "string" - }, - "gasPrice": { - "type": "string" - }, - "gasLimit": { - "type": "string" - }, - "networkFee": { - "type": "string" - }, - "baseFee": { - "description": "(optional) Base Fee according to EIP-1559 (ETH assets)", - "type": "string" - }, - "priorityFee": { - "description": "(optional) Priority Fee according to EIP-1559 (ETH assets)", - "type": "string" - } - } - }, - "medium": { - "type": "object", - "properties": { - "feePerByte": { - "type": "string" - }, - "gasPrice": { - "type": "string" - }, - "gasLimit": { - "type": "string" - }, - "networkFee": { - "type": "string" - }, - "baseFee": { - "description": "(optional) Base Fee according to EIP-1559 (ETH assets)", - "type": "string" - }, - "priorityFee": { - "description": "(optional) Priority Fee according to EIP-1559 (ETH assets)", - "type": "string" - } - } - }, - "high": { - "type": "object", - "properties": { - "feePerByte": { - "type": "string" - }, - "gasPrice": { - "type": "string" - }, - "gasLimit": { - "type": "string" - }, - "networkFee": { - "type": "string" - }, - "baseFee": { - "description": "(optional) Base Fee according to EIP-1559 (ETH assets)", - "type": "string" - }, - "priorityFee": { - "description": "(optional) Priority Fee according to EIP-1559 (ETH assets)", - "type": "string" - } - } - } - }, - "required": [ - "low", - "medium", - "high" - ] - }, - "description": "Estimate transaction fee.\n\nEstimates the transaction fee for a transaction request.\n* Note: Supports all Fireblocks assets except ZCash (ZEC)." - }, - { - "method": "get", - "path": "/transactions/{txId}", - "name": "transactions_getByTxid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the transaction to return" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "ID of the transaction." - }, - "externalTxId": { - "type": "string", - "description": "Unique transaction ID provided by the user. Fireblocks highly recommends setting an `externalTxId` for every transaction created, to avoid submitting the same transaction twice." - }, - "status": { - "type": "string", - "description": "The primary status of the transaction. For details, see [Primary transaction statuses](https://developers.fireblocks.com/reference/primary-transaction-statuses)." - }, - "subStatus": { - "type": "string", - "description": "See [Transaction substatuses](https://developers.fireblocks.com/reference/transaction-substatuses) for the list of transaction sub statuses." - }, - "txHash": { - "type": "string", - "description": "The hash of the transaction on the blockchain.\n * This parameter exists if at least one of the following conditions is met:\n\n 1. The transaction’s source type is `UNKNOWN`, `WHITELISTED_ADDRESS`, `NETWORK_CONNECTION`, `ONE_TIME_ADDRESS`, `FIAT_ACCOUNT` or `GAS_STATION`.\n\n 2. The transaction’s source type is `VAULT` and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these statuses prior to changing to `FAILED` or `REJECTED`. In some instances, transactions in status `BROADCASTING` will include the txHash as well.\n\n 3. The transaction’s source type is `EXCHANGE_ACCOUNT` and the transaction’s destination type is `VAULT`, and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these status prior to changing to `FAILED`.\n \n\n* In addition, the following conditions must be met:\n\n 1. The asset is a crypto asset (not fiat).\n\n 2. The transaction operation is not RAW or `TYPED_MESSAGE`." - }, - "operation": { - "type": "string", - "enum": [ - "TRANSFER", - "BURN", - "CONTRACT_CALL", - "MINT", - "RAW", - "TYPED_MESSAGE", - "ENABLE_ASSET", - "STAKE", - "UNSTAKE", - "WITHDRAW", - "REDEEM_FROM_COMPOUND", - "SUPPLY_TO_COMPOUND" - ], - "description": "* `TRANSFER` - Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n* `ENABLE_ASSET` - Algorand, DigitalBits, Solana, and Stellar require an on-chain transaction to create an asset wallet and enable the deposit address. This transaction is automatically created when adding assets on these blockchains at a vault account.\n* `STAKE` - Assign assets to a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `UNSTAKE` - Remove assets from a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `WITHDRAW` - Transfer assets from a dedicated staking vault account to another address. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n\n **Note:** Fireblocks will rename this type from `WITHDRAW` to a different type name soon. There will be a 7-day notice regarding the new type name.\n\n* `SUPPLY_TO_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n* `REDEEM_FROM_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n" - }, - "note": { - "type": "string", - "description": "Custom note, not sent to the blockchain, that describes the transaction at your Fireblocks workspace." - }, - "assetId": { - "type": "string", - "description": "The ID of the asset to transfer, for `TRANSFER`, `MINT`, `BURN`, `ENABLE_ASSET`,`STAKE` ,`UNSTAKE` or `WITHDRAW` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)", - "x-fb-entity": "asset" - }, - "source": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "sourceAddress": { - "type": "string", - "description": "For account based assets only, the source address of the transaction.\n**Note:** If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the source address. In any other case, this parameter will be empty." - }, - "tag": { - "type": "string", - "description": "Source address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)." - }, - "destination": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "destinations": { - "type": "array", - "description": "The transaction’s destinations.\n**Note:** In case the transaction is sent to a single destination, the `destination` parameter is used instead of this.", - "items": { - "type": "object", - "properties": { - "destination": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "destinationAddress": { - "description": "Address where the asset was transferred." - }, - "destinationAddressDescription": { - "description": "Description of the address." - }, - "amount": { - "type": "string", - "description": "The amount to be sent to this destination." - }, - "amountUSD": { - "type": "string", - "description": "The USD value of the requested amount." - }, - "amlScreeningResult": { - "type": "object", - "description": "The result of the AML screening.", - "properties": { - "provider": { - "type": "string" - }, - "payload": { - "type": "object" - } - } - }, - "customerRefId": { - "description": "The ID for AML providers to associate the owner of funds with transactions." - }, - "authorizationInfo": { - "type": "object", - "description": "The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)", - "properties": { - "allowOperatorAsAuthorizer": { - "type": "boolean" - }, - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ] - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "th": { - "type": "number" - }, - "users": { - "type": "object", - "additionalProperties": { - "type": "string", - "enum": [ - "PENDING_AUTHORIZATION", - "APPROVED", - "REJECTED", - "NA" - ] - } - } - } - } - } - } - } - } - } - }, - "destinationAddress": { - "type": "string", - "description": "Address where the asset were transferred.\nNotes:\n - For [Multi destination transactions](https://support.fireblocks.io/hc/en-us/articles/360018447980-Multi-destination-transactions), this parameter will be empty. In this case, you should refer to the destinations field.\n - If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the destination address. In any other case, this parameter will be empty." - }, - "destinationAddressDescription": { - "type": "string", - "description": "Description of the address." - }, - "destinationTag": { - "type": "string", - "description": "Destination address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)." - }, - "contractCallDecodedData": { - "description": "Decoded data for `CONTRACT_CALL` operations. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for setting this parameter's value.", - "type": "object", - "properties": { - "contractName": { - "type": "string" - }, - "functionCalls": { - "type": "array", - "items": { - "type": "object" - } - } - } - }, - "amountInfo": { - "type": "object", - "description": "The details of the requested amount to transfer.", - "properties": { - "amount": { - "description": "If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount.", - "type": "string" - }, - "requestedAmount": { - "description": "The amount requested by the user.", - "type": "string" - }, - "netAmount": { - "description": "The net amount of the transaction, after fee deduction.", - "type": "string" - }, - "amountUSD": { - "description": "The USD value of the requested amount.", - "type": "string" - } - } - }, - "treatAsGrossAmount": { - "type": "boolean", - "description": "For transactions initiated via this Fireblocks workspace, when set to `true`, the fee is deducted from the requested amount.\n\n**Note**: This parameter can only be considered if a transaction's asset is a base asset, such as ETH or MATIC. If the asset can't be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account." - }, - "feeInfo": { - "type": "object", - "description": "Details of the transaction's fee.", - "properties": { - "networkFee": { - "description": "The fee paid to the network", - "type": "string" - }, - "serviceFee": { - "description": "The total fee deducted by the exchange from the actual requested amount (serviceFee = amount - netAmount)", - "type": "string" - }, - "gasPrice": { - "type": "string" - } - } - }, - "feeCurrency": { - "type": "string", - "description": "The asset which was withdrawn to pay the transaction fee, for example ETH for EVM-based blockchains, BTC for Tether Omni." - }, - "networkRecords": { - "type": "array", - "description": "In case a single transaction resulted with multiple transfers, for example a result of a contract call, then this parameter specifies each transfer that took place on the blockchain. In case of a single transfer transaction, this parameter is empty.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "destination": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "txHash": { - "type": "string" - }, - "networkFee": { - "type": "string" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset" - }, - "netAmount": { - "description": "The net amount of the transaction, after fee deduction", - "type": "string" - }, - "isDropped": { - "type": "boolean" - }, - "type": { - "type": "string" - }, - "destinationAddress": { - "type": "string" - }, - "sourceAddress": { - "type": "string" - }, - "amountUSD": { - "type": "string" - }, - "index": { - "type": "number" - }, - "rewardInfo": { - "type": "object", - "description": "This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.", - "properties": { - "srcRewards": { - "type": "string" - }, - "destRewards": { - "type": "string" - } - } - } - } - } - }, - "createdAt": { - "type": "number", - "description": "The transaction’s creation date and time, in unix timestamp." - }, - "lastUpdated": { - "type": "number", - "description": "The transaction’s last update date and time, in unix timestamp." - }, - "createdBy": { - "type": "string", - "description": "User ID of the initiator of the transaction." - }, - "signedBy": { - "type": "array", - "description": "User ID’s of the signers of the transaction.", - "items": { - "type": "string" - } - }, - "rejectedBy": { - "type": "string", - "description": "User ID of the user that rejected the transaction (in case it was rejected)." - }, - "authorizationInfo": { - "type": "object", - "description": "The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)", - "properties": { - "allowOperatorAsAuthorizer": { - "type": "boolean" - }, - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ] - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "th": { - "type": "number" - }, - "users": { - "type": "object", - "additionalProperties": { - "type": "string", - "enum": [ - "PENDING_AUTHORIZATION", - "APPROVED", - "REJECTED", - "NA" - ] - } - } - } - } - } - } - }, - "exchangeTxId": { - "type": "string", - "description": "If the transaction originated from an exchange, this is the ID of this transaction at the exchange." - }, - "customerRefId": { - "type": "string", - "description": "The ID for AML providers to associate the owner of funds with transactions." - }, - "amlScreeningResult": { - "type": "object", - "description": "The result of the AML screening.", - "properties": { - "provider": { - "type": "string" - }, - "payload": { - "type": "object" - } - } - }, - "extraParameters": { - "type": "object", - "properties": {}, - "description": "Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n" - }, - "signedMessages": { - "type": "object", - "description": "A list of signed messages returned for raw signing.", - "properties": { - "content": { - "type": "string" - }, - "algorithm": { - "type": "string", - "enum": [ - "MPC_ECDSA_SECP256K1", - "MPC_EDDSA_ED25519" - ] - }, - "derivationPath": { - "type": "array", - "items": { - "type": "number" - } - }, - "signature": { - "type": "object", - "properties": { - "fullSig": { - "type": "string" - }, - "r": { - "type": "string" - }, - "s": { - "type": "string" - }, - "v": { - "type": "number" - } - } - }, - "publicKey": { - "type": "string" - } - } - }, - "numOfConfirmations": { - "type": "number", - "description": "The number of confirmations of the transaction. The number will increase until the transaction will be considered completed according to the confirmation policy." - }, - "blockInfo": { - "type": "object", - "description": "The block hash and height of the block that this transaction was mined in.\n **Note**: If an outgoing transaction uses the destinations object with more than one value in the array, blockHash is set to null.", - "properties": { - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - } - } - }, - "index": { - "type": "number", - "description": "For UTXO based assets this is the vOut, for Ethereum based, this is the index of the event of the contract call.\n **Note:** This field is not returned if a transaction uses the `destinations` object with more than one value." - }, - "rewardInfo": { - "type": "object", - "description": "This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.", - "properties": { - "srcRewards": { - "type": "string" - }, - "destRewards": { - "type": "string" - } - } - }, - "systemMessages": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "WARN", - "BLOCK" - ] - }, - "message": { - "type": "string", - "description": "A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.", - "example": "Slow transaction processing. Outgoing transactions might be stuck." - } - } - }, - "addressType": { - "type": "string", - "enum": [ - "WHITELISTED", - "ONE_TIME" - ] - }, - "requestedAmount": { - "description": "The amount requested by the user. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "amount": { - "description": "If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "netAmount": { - "description": "The net amount of the transaction, after fee deduction. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "amountUSD": { - "description": "The USD value of the requested amount. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "nullable": true, - "deprecated": true - }, - "serviceFee": { - "description": "The total fee deducted by the exchange from the actual requested amount (`serviceFee` = `amount` - `netAmount`). Deprecated - please use the `feeInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "fee": { - "description": "Deprecated - please use the `feeInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "networkFee": { - "description": "The fee paid to the network. Deprecated - please use the `feeInfo` field for accuracy.", - "type": "number", - "deprecated": true - } - } - }, - "description": "Find a specific transaction by Fireblocks transaction ID.\n\nReturns a transaction by ID." - }, - { - "method": "get", - "path": "/transactions/external_tx_id/{externalTxId}/", - "name": "transactions_external_tx_id_getByExternaltxid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The external ID of the transaction to return" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "ID of the transaction." - }, - "externalTxId": { - "type": "string", - "description": "Unique transaction ID provided by the user. Fireblocks highly recommends setting an `externalTxId` for every transaction created, to avoid submitting the same transaction twice." - }, - "status": { - "type": "string", - "description": "The primary status of the transaction. For details, see [Primary transaction statuses](https://developers.fireblocks.com/reference/primary-transaction-statuses)." - }, - "subStatus": { - "type": "string", - "description": "See [Transaction substatuses](https://developers.fireblocks.com/reference/transaction-substatuses) for the list of transaction sub statuses." - }, - "txHash": { - "type": "string", - "description": "The hash of the transaction on the blockchain.\n * This parameter exists if at least one of the following conditions is met:\n\n 1. The transaction’s source type is `UNKNOWN`, `WHITELISTED_ADDRESS`, `NETWORK_CONNECTION`, `ONE_TIME_ADDRESS`, `FIAT_ACCOUNT` or `GAS_STATION`.\n\n 2. The transaction’s source type is `VAULT` and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these statuses prior to changing to `FAILED` or `REJECTED`. In some instances, transactions in status `BROADCASTING` will include the txHash as well.\n\n 3. The transaction’s source type is `EXCHANGE_ACCOUNT` and the transaction’s destination type is `VAULT`, and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these status prior to changing to `FAILED`.\n \n\n* In addition, the following conditions must be met:\n\n 1. The asset is a crypto asset (not fiat).\n\n 2. The transaction operation is not RAW or `TYPED_MESSAGE`." - }, - "operation": { - "type": "string", - "enum": [ - "TRANSFER", - "BURN", - "CONTRACT_CALL", - "MINT", - "RAW", - "TYPED_MESSAGE", - "ENABLE_ASSET", - "STAKE", - "UNSTAKE", - "WITHDRAW", - "REDEEM_FROM_COMPOUND", - "SUPPLY_TO_COMPOUND" - ], - "description": "* `TRANSFER` - Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n* `ENABLE_ASSET` - Algorand, DigitalBits, Solana, and Stellar require an on-chain transaction to create an asset wallet and enable the deposit address. This transaction is automatically created when adding assets on these blockchains at a vault account.\n* `STAKE` - Assign assets to a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `UNSTAKE` - Remove assets from a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `WITHDRAW` - Transfer assets from a dedicated staking vault account to another address. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n\n **Note:** Fireblocks will rename this type from `WITHDRAW` to a different type name soon. There will be a 7-day notice regarding the new type name.\n\n* `SUPPLY_TO_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n* `REDEEM_FROM_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n" - }, - "note": { - "type": "string", - "description": "Custom note, not sent to the blockchain, that describes the transaction at your Fireblocks workspace." - }, - "assetId": { - "type": "string", - "description": "The ID of the asset to transfer, for `TRANSFER`, `MINT`, `BURN`, `ENABLE_ASSET`,`STAKE` ,`UNSTAKE` or `WITHDRAW` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)", - "x-fb-entity": "asset" - }, - "source": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "sourceAddress": { - "type": "string", - "description": "For account based assets only, the source address of the transaction.\n**Note:** If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the source address. In any other case, this parameter will be empty." - }, - "tag": { - "type": "string", - "description": "Source address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)." - }, - "destination": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "destinations": { - "type": "array", - "description": "The transaction’s destinations.\n**Note:** In case the transaction is sent to a single destination, the `destination` parameter is used instead of this.", - "items": { - "type": "object", - "properties": { - "destination": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "destinationAddress": { - "description": "Address where the asset was transferred." - }, - "destinationAddressDescription": { - "description": "Description of the address." - }, - "amount": { - "type": "string", - "description": "The amount to be sent to this destination." - }, - "amountUSD": { - "type": "string", - "description": "The USD value of the requested amount." - }, - "amlScreeningResult": { - "type": "object", - "description": "The result of the AML screening.", - "properties": { - "provider": { - "type": "string" - }, - "payload": { - "type": "object" - } - } - }, - "customerRefId": { - "description": "The ID for AML providers to associate the owner of funds with transactions." - }, - "authorizationInfo": { - "type": "object", - "description": "The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)", - "properties": { - "allowOperatorAsAuthorizer": { - "type": "boolean" - }, - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ] - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "th": { - "type": "number" - }, - "users": { - "type": "object", - "additionalProperties": { - "type": "string", - "enum": [ - "PENDING_AUTHORIZATION", - "APPROVED", - "REJECTED", - "NA" - ] - } - } - } - } - } - } - } - } - } - }, - "destinationAddress": { - "type": "string", - "description": "Address where the asset were transferred.\nNotes:\n - For [Multi destination transactions](https://support.fireblocks.io/hc/en-us/articles/360018447980-Multi-destination-transactions), this parameter will be empty. In this case, you should refer to the destinations field.\n - If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the destination address. In any other case, this parameter will be empty." - }, - "destinationAddressDescription": { - "type": "string", - "description": "Description of the address." - }, - "destinationTag": { - "type": "string", - "description": "Destination address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)." - }, - "contractCallDecodedData": { - "description": "Decoded data for `CONTRACT_CALL` operations. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for setting this parameter's value.", - "type": "object", - "properties": { - "contractName": { - "type": "string" - }, - "functionCalls": { - "type": "array", - "items": { - "type": "object" - } - } - } - }, - "amountInfo": { - "type": "object", - "description": "The details of the requested amount to transfer.", - "properties": { - "amount": { - "description": "If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount.", - "type": "string" - }, - "requestedAmount": { - "description": "The amount requested by the user.", - "type": "string" - }, - "netAmount": { - "description": "The net amount of the transaction, after fee deduction.", - "type": "string" - }, - "amountUSD": { - "description": "The USD value of the requested amount.", - "type": "string" - } - } - }, - "treatAsGrossAmount": { - "type": "boolean", - "description": "For transactions initiated via this Fireblocks workspace, when set to `true`, the fee is deducted from the requested amount.\n\n**Note**: This parameter can only be considered if a transaction's asset is a base asset, such as ETH or MATIC. If the asset can't be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account." - }, - "feeInfo": { - "type": "object", - "description": "Details of the transaction's fee.", - "properties": { - "networkFee": { - "description": "The fee paid to the network", - "type": "string" - }, - "serviceFee": { - "description": "The total fee deducted by the exchange from the actual requested amount (serviceFee = amount - netAmount)", - "type": "string" - }, - "gasPrice": { - "type": "string" - } - } - }, - "feeCurrency": { - "type": "string", - "description": "The asset which was withdrawn to pay the transaction fee, for example ETH for EVM-based blockchains, BTC for Tether Omni." - }, - "networkRecords": { - "type": "array", - "description": "In case a single transaction resulted with multiple transfers, for example a result of a contract call, then this parameter specifies each transfer that took place on the blockchain. In case of a single transfer transaction, this parameter is empty.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "destination": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "subType": { - "type": "string", - "description": "In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`." - }, - "id": { - "type": "string", - "description": "The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed." - }, - "name": { - "type": "string", - "description": "The name of the peer." - }, - "walletId": { - "type": "string", - "format": "uuid" - } - } - }, - "txHash": { - "type": "string" - }, - "networkFee": { - "type": "string" - }, - "assetId": { - "type": "string", - "x-fb-entity": "asset" - }, - "netAmount": { - "description": "The net amount of the transaction, after fee deduction", - "type": "string" - }, - "isDropped": { - "type": "boolean" - }, - "type": { - "type": "string" - }, - "destinationAddress": { - "type": "string" - }, - "sourceAddress": { - "type": "string" - }, - "amountUSD": { - "type": "string" - }, - "index": { - "type": "number" - }, - "rewardInfo": { - "type": "object", - "description": "This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.", - "properties": { - "srcRewards": { - "type": "string" - }, - "destRewards": { - "type": "string" - } - } - } - } - } - }, - "createdAt": { - "type": "number", - "description": "The transaction’s creation date and time, in unix timestamp." - }, - "lastUpdated": { - "type": "number", - "description": "The transaction’s last update date and time, in unix timestamp." - }, - "createdBy": { - "type": "string", - "description": "User ID of the initiator of the transaction." - }, - "signedBy": { - "type": "array", - "description": "User ID’s of the signers of the transaction.", - "items": { - "type": "string" - } - }, - "rejectedBy": { - "type": "string", - "description": "User ID of the user that rejected the transaction (in case it was rejected)." - }, - "authorizationInfo": { - "type": "object", - "description": "The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)", - "properties": { - "allowOperatorAsAuthorizer": { - "type": "boolean" - }, - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ] - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "th": { - "type": "number" - }, - "users": { - "type": "object", - "additionalProperties": { - "type": "string", - "enum": [ - "PENDING_AUTHORIZATION", - "APPROVED", - "REJECTED", - "NA" - ] - } - } - } - } - } - } - }, - "exchangeTxId": { - "type": "string", - "description": "If the transaction originated from an exchange, this is the ID of this transaction at the exchange." - }, - "customerRefId": { - "type": "string", - "description": "The ID for AML providers to associate the owner of funds with transactions." - }, - "amlScreeningResult": { - "type": "object", - "description": "The result of the AML screening.", - "properties": { - "provider": { - "type": "string" - }, - "payload": { - "type": "object" - } - } - }, - "extraParameters": { - "type": "object", - "properties": {}, - "description": "Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n" - }, - "signedMessages": { - "type": "object", - "description": "A list of signed messages returned for raw signing.", - "properties": { - "content": { - "type": "string" - }, - "algorithm": { - "type": "string", - "enum": [ - "MPC_ECDSA_SECP256K1", - "MPC_EDDSA_ED25519" - ] - }, - "derivationPath": { - "type": "array", - "items": { - "type": "number" - } - }, - "signature": { - "type": "object", - "properties": { - "fullSig": { - "type": "string" - }, - "r": { - "type": "string" - }, - "s": { - "type": "string" - }, - "v": { - "type": "number" - } - } - }, - "publicKey": { - "type": "string" - } - } - }, - "numOfConfirmations": { - "type": "number", - "description": "The number of confirmations of the transaction. The number will increase until the transaction will be considered completed according to the confirmation policy." - }, - "blockInfo": { - "type": "object", - "description": "The block hash and height of the block that this transaction was mined in.\n **Note**: If an outgoing transaction uses the destinations object with more than one value in the array, blockHash is set to null.", - "properties": { - "blockHeight": { - "type": "string" - }, - "blockHash": { - "type": "string" - } - } - }, - "index": { - "type": "number", - "description": "For UTXO based assets this is the vOut, for Ethereum based, this is the index of the event of the contract call.\n **Note:** This field is not returned if a transaction uses the `destinations` object with more than one value." - }, - "rewardInfo": { - "type": "object", - "description": "This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.", - "properties": { - "srcRewards": { - "type": "string" - }, - "destRewards": { - "type": "string" - } - } - }, - "systemMessages": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "WARN", - "BLOCK" - ] - }, - "message": { - "type": "string", - "description": "A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.", - "example": "Slow transaction processing. Outgoing transactions might be stuck." - } - } - }, - "addressType": { - "type": "string", - "enum": [ - "WHITELISTED", - "ONE_TIME" - ] - }, - "requestedAmount": { - "description": "The amount requested by the user. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "amount": { - "description": "If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "netAmount": { - "description": "The net amount of the transaction, after fee deduction. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "amountUSD": { - "description": "The USD value of the requested amount. Deprecated - please use the `amountInfo` field for accuracy.", - "type": "number", - "nullable": true, - "deprecated": true - }, - "serviceFee": { - "description": "The total fee deducted by the exchange from the actual requested amount (`serviceFee` = `amount` - `netAmount`). Deprecated - please use the `feeInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "fee": { - "description": "Deprecated - please use the `feeInfo` field for accuracy.", - "type": "number", - "deprecated": true - }, - "networkFee": { - "description": "The fee paid to the network. Deprecated - please use the `feeInfo` field for accuracy.", - "type": "number", - "deprecated": true - } - } - }, - "description": "Find a specific transaction by external transaction ID.\n\nReturns transaction by external transaction ID." - }, - { - "method": "post", - "path": "/transactions/{txId}/set_confirmation_threshold", - "name": "transactions_set_confirmation_threshold_postByTxid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the transaction" - }, - { - "type": "object", - "properties": { - "numOfConfirmations": { - "type": "number" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - }, - "transactions": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "description": "Set confirmation threshold by transaction ID.\n\nOverrides the required number of confirmations for transaction completion by transaction ID." - }, - { - "method": "post", - "path": "/transactions/{txId}/drop", - "name": "transactions_drop_postByTxid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the transaction" - }, - { - "type": "object", - "properties": { - "txId": { - "type": "string" - }, - "feeLevel": { - "type": "string" - }, - "gasPrice": { - "type": "string" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - }, - "transactions": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "description": "Drop ETH transaction by ID.\n\nDrops a stuck ETH transaction and creates a replacement transaction." - }, - { - "method": "post", - "path": "/transactions/{txId}/cancel", - "name": "transactions_cancel_postByTxid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the transaction to cancel" - } - ], - "output": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "description": "Cancel a transaction.\n\nCancels a transaction by ID." - }, - { - "method": "post", - "path": "/transactions/{txId}/freeze", - "name": "transactions_freeze_postByTxid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the transaction to freeze" - } - ], - "output": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "description": "Freeze a transaction.\n\nFreezes a transaction by ID." - }, - { - "method": "post", - "path": "/transactions/{txId}/unfreeze", - "name": "transactions_unfreeze_postByTxid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the transaction to unfreeze" - } - ], - "output": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "description": "Unfreeze a transaction.\n\nUnfreezes a transaction by ID and makes the transaction available again." - }, - { - "method": "post", - "path": "/txHash/{txHash}/set_confirmation_threshold", - "name": "txHash_set_confirmation_threshold_postByTxhash", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The TxHash" - }, - { - "type": "object", - "properties": { - "numOfConfirmations": { - "type": "number" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - }, - "transactions": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "description": "Set confirmation threshold by transaction hash.\n\nOverrides the required number of confirmations for transaction completion by transaction hash." - }, - { - "method": "get", - "path": "/payments/xb-settlements/configs", - "name": "payments_xb_settlements_configs_get", - "parameters": [], - "output": { - "type": "object", - "properties": { - "configurations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "configId": { - "type": "string", - "format": "uuid", - "description": "Cross Bodrder configuraion unique id" - }, - "corridorId": { - "type": "string", - "enum": [ - "MX_US", - "CO_US", - "US_MX", - "US_EU", - "US_UK" - ], - "description": "- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n" - }, - "name": { - "type": "string", - "description": "The name for the cross-border ettlement configuration" - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "inputAssetId": {}, - "outputAssetId": {} - }, - "required": [ - "accountId" - ] - } - }, - "conversionSlippageBasisPoints": { - "type": "integer", - "minimum": 0, - "maximum": 10000, - "default": 10000, - "description": "Slippage configuarion in basis points, the default value is 10%\n" - }, - "createdAt": { - "type": "number", - "description": "The creation time in epoch format." - } - }, - "required": [ - "configId", - "name", - "corridorId", - "steps", - "conversionSlippageBasisPoints", - "createdAt" - ] - } - } - }, - "required": [ - "configurations" - ] - }, - "description": "Get all the cross-border settlement configurations.
\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "post", - "path": "/payments/xb-settlements/configs", - "name": "payments_xb_settlements_configs_post", - "parameters": [ - { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name for the cross-border settlement configuration" - }, - "corridorId": { - "type": "string", - "enum": [ - "MX_US", - "CO_US", - "US_MX", - "US_EU", - "US_UK" - ], - "description": "- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n" - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "inputAssetId": {}, - "outputAssetId": {} - }, - "required": [ - "accountId" - ] - } - }, - "conversionSlippageBasisPoints": { - "type": "integer", - "minimum": 0, - "maximum": 10000, - "default": 10000, - "description": "Slippage configuarion in basis points, the default value is 10%\n" - } - }, - "required": [ - "name", - "corridorId", - "steps" - ] - } - ], - "output": { - "type": "object", - "properties": { - "configId": { - "type": "string", - "format": "uuid", - "description": "Cross Bodrder configuraion unique id" - }, - "corridorId": { - "type": "string", - "enum": [ - "MX_US", - "CO_US", - "US_MX", - "US_EU", - "US_UK" - ], - "description": "- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n" - }, - "name": { - "type": "string", - "description": "The name for the cross-border ettlement configuration" - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "inputAssetId": {}, - "outputAssetId": {} - }, - "required": [ - "accountId" - ] - } - }, - "conversionSlippageBasisPoints": { - "type": "integer", - "minimum": 0, - "maximum": 10000, - "default": 10000, - "description": "Slippage configuarion in basis points, the default value is 10%\n" - }, - "createdAt": { - "type": "number", - "description": "The creation time in epoch format." - } - }, - "required": [ - "configId", - "name", - "corridorId", - "steps", - "conversionSlippageBasisPoints", - "createdAt" - ] - }, - "description": "Create a new cross-border settlement configuration.\n\nCreate a new cross-border settlement configuration.
Configurations define the default assets, on-ramps, and off-ramps to use for the cross-border settlement.
\nA configuration must contain at least two steps - `ON_RAMP` and `VAULT_ACCOUNT`.
\nAll other steps (e.g., `OFF_RAMP`, `FIAT_DESTINATION`, etc.) are optional.
\nEvery step must include the `accountId` to be used, while `inputAssetId` and `outputAssetId` are optional. \nIf those are not provided, a default value will be used from the Corridor Settings.
\nIf the inputAssetId or the outputAssetId is provided for one of the objects, all assets in the objects must be consistent. For example, if the output asset of ON_RAMP is XLM_USDC_5F3T, then the input asset of the VAULT_ACCOUNT must also be XLM_USDC_5F3T..
\nYou can set a slippage amount for your configuration. Slippage is defined by basis points (bps). This value can be overloaded on execution. If you do not configure a slippage amount, the default slippage of 10000 bps (10%) is used.
\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "get", - "path": "/payments/xb-settlements/configs/{configId}", - "name": "payments_xb_settlements_configs_getByConfigid", - "parameters": [ - { - "type": "string", - "description": "The cross-border settlement configuration ID." - } - ], - "output": { - "type": "object", - "properties": { - "configId": { - "type": "string", - "format": "uuid", - "description": "Cross Bodrder configuraion unique id" - }, - "corridorId": { - "type": "string", - "enum": [ - "MX_US", - "CO_US", - "US_MX", - "US_EU", - "US_UK" - ], - "description": "- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n" - }, - "name": { - "type": "string", - "description": "The name for the cross-border ettlement configuration" - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "inputAssetId": {}, - "outputAssetId": {} - }, - "required": [ - "accountId" - ] - } - }, - "conversionSlippageBasisPoints": { - "type": "integer", - "minimum": 0, - "maximum": 10000, - "default": 10000, - "description": "Slippage configuarion in basis points, the default value is 10%\n" - }, - "createdAt": { - "type": "number", - "description": "The creation time in epoch format." - } - }, - "required": [ - "configId", - "name", - "corridorId", - "steps", - "conversionSlippageBasisPoints", - "createdAt" - ] - }, - "description": "Get a specific cross-border settlement configuration.
\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "put", - "path": "/payments/xb-settlements/configs/{configId}", - "name": "payments_xb_settlements_configs_putByConfigid", - "parameters": [ - { - "type": "string", - "description": "The cross-border settlement configuration ID." - }, - { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name for the cross-border settlement configuration" - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "inputAssetId": {}, - "outputAssetId": {} - }, - "required": [ - "accountId" - ] - } - }, - "conversionSlippageBasisPoints": { - "type": "integer", - "minimum": 0, - "maximum": 10000, - "default": 10000, - "description": "Slippage configuarion in basis points, the default value is 10%\n" - } - }, - "required": [ - "name", - "steps" - ] - } - ], - "output": { - "type": "object", - "properties": { - "configId": { - "type": "string", - "format": "uuid", - "description": "Cross Bodrder configuraion unique id" - }, - "corridorId": { - "type": "string", - "enum": [ - "MX_US", - "CO_US", - "US_MX", - "US_EU", - "US_UK" - ], - "description": "- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n" - }, - "name": { - "type": "string", - "description": "The name for the cross-border ettlement configuration" - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "inputAssetId": {}, - "outputAssetId": {} - }, - "required": [ - "accountId" - ] - } - }, - "conversionSlippageBasisPoints": { - "type": "integer", - "minimum": 0, - "maximum": 10000, - "default": 10000, - "description": "Slippage configuarion in basis points, the default value is 10%\n" - }, - "createdAt": { - "type": "number", - "description": "The creation time in epoch format." - } - }, - "required": [ - "configId", - "name", - "corridorId", - "steps", - "conversionSlippageBasisPoints", - "createdAt" - ] - }, - "description": "Edit a cross-border settlement configuration.\nEditing a configuration does not affect previously executed flows that used the configuration.\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "delete", - "path": "/payments/xb-settlements/configs/{configId}", - "name": "payments_xb_settlements_configs_eraseByConfigid", - "parameters": [ - { - "type": "string", - "description": "The cross-border settlement configuration ID." - } - ], - "output": { - "type": "object", - "properties": { - "configId": { - "type": "string", - "format": "uuid", - "description": "Cross Bodrder configuraion unique id" - }, - "corridorId": { - "type": "string", - "enum": [ - "MX_US", - "CO_US", - "US_MX", - "US_EU", - "US_UK" - ], - "description": "- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n" - }, - "name": { - "type": "string", - "description": "The name for the cross-border ettlement configuration" - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "inputAssetId": {}, - "outputAssetId": {} - }, - "required": [ - "accountId" - ] - } - }, - "conversionSlippageBasisPoints": { - "type": "integer", - "minimum": 0, - "maximum": 10000, - "default": 10000, - "description": "Slippage configuarion in basis points, the default value is 10%\n" - }, - "createdAt": { - "type": "number", - "description": "The creation time in epoch format." - } - }, - "required": [ - "configId", - "name", - "corridorId", - "steps", - "conversionSlippageBasisPoints", - "createdAt" - ] - }, - "description": "Delete a cross-border settlement configuration.\nThis does not delete or remove previously executed flows that used this configuration.\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "post", - "path": "/payments/xb-settlements/flows", - "name": "payments_xb_settlements_flows_post", - "parameters": [ - { - "type": "object", - "properties": { - "configId": { - "type": "string", - "format": "uuid", - "description": "Cross Bodrder configuraion unique id" - }, - "amount": { - "type": "string", - "description": "The amount to transfer in this cross-border flow. The type of asset is defined by the cross-border settlement configuration." - } - }, - "required": [ - "configId", - "amount" - ] - } - ], - "output": { - "type": "object", - "properties": { - "flowId": { - "type": "string", - "description": "The unique id for the cross-border flow." - }, - "configId": { - "type": "string", - "format": "uuid", - "description": "Cross Bodrder configuraion unique id" - }, - "conversionRate": { - "type": "string", - "description": "The conversion rate received from the on-ramp or off-ramp." - }, - "inputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "estimatedOutputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "totalEstimatedFee": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "totalEstimatedTime": { - "type": "number", - "description": "The total *estimated* time for executing the cross-border flow." - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "inputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "outputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "estimatedFeeAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "estimatedTime": { - "type": "number", - "description": "The estimated time for executing the step." - }, - "isSignRequired": { - "type": "boolean", - "description": "Whether or not signing is required for executing the step." - } - }, - "required": [ - "accountId", - "inputAmount", - "outputAmount", - "estimatedFeeAmount", - "estimatedTime", - "isSignRequired" - ] - } - } - }, - "required": [ - "flowId", - "configId", - "steps", - "inputAmount", - "estimatedOutputAmount", - "totalEstimatedFee", - "totalEstimatedTime", - "conversionRate" - ] - }, - "description": "Create a new cross-border settlement flow.\n\nCreate a cross-border flow (based on a cross-border configuration) with an amount to transfer. \nThe assetId is defined by the cross-border configuration.\nCreating a flow triggers a calculation of the flow estimations, including FX rates, times, and fees based on the amount provided.\nCreating a cross-border flow will not execute the flow.\n\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "get", - "path": "/payments/xb-settlements/flows/{flowId}", - "name": "payments_xb_settlements_flows_getByFlowid", - "parameters": [ - { - "type": "string", - "description": "The cross-border settlement flow ID." - } - ], - "output": { - "type": "object", - "properties": { - "preview": { - "type": "object", - "properties": { - "flowId": { - "type": "string", - "description": "The unique id for the cross-border flow." - }, - "configId": { - "type": "string", - "format": "uuid", - "description": "Cross Bodrder configuraion unique id" - }, - "conversionRate": { - "type": "string", - "description": "The conversion rate received from the on-ramp or off-ramp." - }, - "inputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "estimatedOutputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "totalEstimatedFee": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "totalEstimatedTime": { - "type": "number", - "description": "The total *estimated* time for executing the cross-border flow." - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "inputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "outputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "estimatedFeeAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "estimatedTime": { - "type": "number", - "description": "The estimated time for executing the step." - }, - "isSignRequired": { - "type": "boolean", - "description": "Whether or not signing is required for executing the step." - } - }, - "required": [ - "accountId", - "inputAmount", - "outputAmount", - "estimatedFeeAmount", - "estimatedTime", - "isSignRequired" - ] - } - } - }, - "required": [ - "flowId", - "configId", - "steps", - "inputAmount", - "estimatedOutputAmount", - "totalEstimatedFee", - "totalEstimatedTime", - "conversionRate" - ] - }, - "execution": { - "type": "object", - "properties": { - "flowId": { - "type": "string", - "description": "The unique id for the cross-border flow." - }, - "configId": { - "type": "string", - "format": "uuid", - "description": "Cross Bodrder configuraion unique id" - }, - "inputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "outputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "totalFee": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "initiatedAt": { - "type": "number", - "description": "The time the cross-border flow executed in epoch format." - }, - "initiatedBy": { - "description": "The id of the user which launched the flow", - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "NOT_LAUNCHED", - "PROCESSING", - "COMPLETED", - "FAILED" - ] - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "A unique id for the step execution" - }, - "accountId": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "NOT_STARTED", - "PROCESSING", - "COMPLETED", - "FAILED" - ] - }, - "inputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "outputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "fee": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "startedAt": { - "type": "number", - "description": "The step execution start time in epoch format." - }, - "completedAt": { - "type": "number", - "description": "The step execution end time in epoch format." - }, - "isSignRequired": { - "type": "boolean", - "description": "Whether or not signing is required for executing the step." - } - }, - "required": [ - "id", - "accountId", - "status", - "inputAmount", - "isSignRequired" - ] - } - }, - "selectedConversionSlippage": { - "type": "object", - "description": "Indicates the selected slippage used during the flow since override logic may have taken place.", - "properties": { - "basisPoints": { - "type": "number" - }, - "reason": { - "type": "string", - "enum": [ - "DEFAULT", - "CONFIG", - "FLOW" - ] - } - }, - "required": [ - "basisPoints", - "reason" - ] - } - }, - "required": [ - "flowId", - "configId", - "steps", - "inputAmount", - "outputAmount", - "totalFee", - "initiatedAt", - "initiatedBy", - "state", - "selectedConversionSlippage" - ] - } - } - }, - "description": "Get specific cross-border settlement flow details.\n\nGets details for a specific cross-border settlement flow\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "post", - "path": "/payments/xb-settlements/flows/{flowId}/actions/execute", - "name": "payments_xb_settlements_flows_actions_execute_postByFlowid", - "parameters": [ - { - "type": "string", - "description": "The cross-border settlement flow ID." - }, - { - "type": "object", - "properties": { - "conversionSlippageBasisPoints": { - "type": "integer", - "minimum": 0, - "maximum": 10000, - "default": 10000, - "description": "Slippage configuarion in basis points, the default value is 10%\n" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "flowId": { - "type": "string", - "description": "The unique id for the cross-border flow." - }, - "configId": { - "type": "string", - "format": "uuid", - "description": "Cross Bodrder configuraion unique id" - }, - "inputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "outputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "totalFee": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "initiatedAt": { - "type": "number", - "description": "The time the cross-border flow executed in epoch format." - }, - "initiatedBy": { - "description": "The id of the user which launched the flow", - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "NOT_LAUNCHED", - "PROCESSING", - "COMPLETED", - "FAILED" - ] - }, - "steps": { - "type": "object", - "properties": { - "stepType": { - "type": "string", - "enum": [ - "ON_RAMP", - "VAULT_ACCOUNT", - "OFF_RAMP", - "FIAT_DESTINATION" - ], - "description": "- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n" - } - }, - "additionalProperties": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "A unique id for the step execution" - }, - "accountId": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "NOT_STARTED", - "PROCESSING", - "COMPLETED", - "FAILED" - ] - }, - "inputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "outputAmount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "fee": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": {} - }, - "required": [ - "amount" - ] - }, - "startedAt": { - "type": "number", - "description": "The step execution start time in epoch format." - }, - "completedAt": { - "type": "number", - "description": "The step execution end time in epoch format." - }, - "isSignRequired": { - "type": "boolean", - "description": "Whether or not signing is required for executing the step." - } - }, - "required": [ - "id", - "accountId", - "status", - "inputAmount", - "isSignRequired" - ] - } - }, - "selectedConversionSlippage": { - "type": "object", - "description": "Indicates the selected slippage used during the flow since override logic may have taken place.", - "properties": { - "basisPoints": { - "type": "number" - }, - "reason": { - "type": "string", - "enum": [ - "DEFAULT", - "CONFIG", - "FLOW" - ] - } - }, - "required": [ - "basisPoints", - "reason" - ] - } - }, - "required": [ - "flowId", - "configId", - "steps", - "inputAmount", - "outputAmount", - "totalFee", - "initiatedAt", - "initiatedBy", - "state", - "selectedConversionSlippage" - ] - }, - "description": "Execute cross-border settlement flow.\n\nSend a payment flow with 'flowId' for execution.\nIf a differet slippage configuraion is needed for this execution than configured in the flow configuration, the request body must define the desired slippage configuration for this execution.\n\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "post", - "path": "/payments/payout", - "name": "payments_payout_post", - "parameters": [ - { - "type": "object", - "properties": { - "paymentAccount": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "VAULT_ACCOUNT", - "EXCHANGE_ACCOUNT", - "FIAT_ACCOUNT" - ] - } - }, - "required": [ - "id", - "type" - ] - }, - "instructionSet": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "payeeAccount": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "VAULT_ACCOUNT", - "EXCHANGE_ACCOUNT", - "INTERNAL_WALLET", - "EXTERNAL_WALLET", - "NETWORK_CONNECTION", - "FIAT_ACCOUNT" - ], - "description": "- VAULT_ACCOUNT \ta native Fireblocks vault account\n- EXCHANGE_ACCOUNT \ta third-party exchange account\n- INTERNAL_WALLET \ta whitelisted address marked as internal to the workspace/organization\n- EXTERNAL_WALLET\ta whitelisted address marked as external\n- NETWORK_CONNECTION\ta member of the Fireblocks network\n- FIAT_ACCOUNT\ta third-party account of a fiat bank (Signature, BCB, etc)\n" - } - }, - "required": [ - "id", - "type" - ] - }, - "amount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": { - "type": "string" - } - }, - "required": [ - "amount", - "assetId" - ] - } - }, - "required": [ - "amount", - "payeeAccount" - ] - } - } - }, - "required": [ - "paymentAccount", - "instructionSet" - ] - } - ], - "output": { - "type": "object", - "properties": { - "payoutId": { - "type": "string" - }, - "paymentAccount": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "VAULT_ACCOUNT", - "EXCHANGE_ACCOUNT", - "FIAT_ACCOUNT" - ] - } - } - }, - "createdAt": { - "type": "number" - }, - "state": { - "type": "string", - "enum": [ - "CREATED", - "FILE_FOUND", - "REQUESTED", - "TRANSLATED", - "PROCESSING", - "SUBMITTED", - "FINALIZED", - "INSUFFICIENT_BALANCE", - "FAILED" - ], - "description": "- CREATED - payout instruction set created with all its details\n- FILE_FOUND - new file found in the FTP\n- REQUESTED - payout requested with all its details\n- TRANSLATED - payout instruction account IDs identified and translated\n- PROCESSING - payout instruction set executed and is processing\n- SUBMITTED - transactions submitted for payout instructions\n- FINALIZED - payout finished processing, all transactions processed successfully\n- INSUFFICIENT_BALANCE - insufficient balance in the payment account (can be a temporary state)\n- FAILED - one or more of the payout instructions failed\n" - }, - "status": { - "type": "string", - "enum": [ - "REGISTERED", - "VERIFYING", - "IN_PROGRESS", - "DONE", - "INSUFFICIENT_BALANCE", - "FAILED" - ], - "description": "- REQUESTED\tpayout requested with all its details\n- VERIFIED\tpayout instruction set details were verified\n- PROCESSING\tpayout instruction set executed and is processing\n- FINALIZED\tpayout done (all payout instructions completed successfully)\n- INSUFFICIENT_BALANCE\tinsufficient balance in the payment account (can be a temporary state)\n- FAILED\tone or more of the payout instructions failed\n" - }, - "reasonOfFailure": { - "type": "string", - "description": "
    \n
  • INSUFFICIENT_BALANCE
  • \n
  • SOURCE_TRANSLATION
  • \n
  • SOURCE_NOT_UNIQUE
  • \n
  • SOURCE_NOT_FOUND
  • \n
  • SOURCE_TYPE_NOT_SUPPORTED
  • \n
  • EMPTY_SOURCE
  • \n
  • DESTINATION_TRANSLATION
  • \n
  • DESTINATION_NOT_UNIQUE
  • \n
  • DESTINATION_NOT_FOUND
  • \n
  • EMPTY_DESTINATION
  • \n
  • PARSING
  • \n
  • UNKNOWN
  • \n
  • FIREBLOCKS_CLIENT
  • \n
  • TRANSACTION_SUBMISSION
  • \n
\n" - }, - "initMethod": { - "type": "string", - "enum": [ - "FILE", - "API" - ] - }, - "instructionSet": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "payeeAccount": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "VAULT_ACCOUNT", - "EXCHANGE_ACCOUNT", - "INTERNAL_WALLET", - "EXTERNAL_WALLET", - "NETWORK_CONNECTION", - "FIAT_ACCOUNT" - ], - "description": "- VAULT_ACCOUNT \ta native Fireblocks vault account\n- EXCHANGE_ACCOUNT \ta third-party exchange account\n- INTERNAL_WALLET \ta whitelisted address marked as internal to the workspace/organization\n- EXTERNAL_WALLET\ta whitelisted address marked as external\n- NETWORK_CONNECTION\ta member of the Fireblocks network\n- FIAT_ACCOUNT\ta third-party account of a fiat bank (Signature, BCB, etc)\n" - } - } - }, - "amount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": { - "type": "string" - } - }, - "required": [ - "amount", - "assetId" - ] - }, - "state": { - "type": "string", - "enum": [ - "NOT_STARTED", - "TRANSACTION_SENT", - "COMPLETED", - "FAILED", - "TRANSLATION_ERROR", - "SKIPPED" - ], - "description": "- NOT_STARTED\t- waiting to start\n- TRANSACTION_SENT - an underlying transaction was sent\n- COMPLETED\t- completed successfully\n- FAILED - failed\n- TRANSLATION_ERROR -lookup of the destination failed (due to changes in the underlying whitelisted external wallet or similar)\n- SKIPPED- no transaction(s) created for this instruction\n" - }, - "transactions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "SUBMITTED", - "QUEUED", - "PENDING_AUTHORIZATION", - "PENDING_SIGNATURE", - "BROADCASTING", - "PENDING_3RD_PARTY_MANUAL_APPROVAL", - "PENDING_3RD_PARTY", - "PENDING", - "CONFIRMING", - "CONFIRMED", - "COMPLETED", - "PARTIALLY_COMPLETED", - "PENDING_AML_SCREENING", - "CANCELLING", - "CANCELLED", - "REJECTED", - "BLOCKED", - "FAILED", - "TIMEOUT" - ] - }, - "timestamp": { - "type": "number", - "format": "date-time" - }, - "instructionId": { - "type": "string" - } - }, - "required": [ - "id", - "state" - ] - } - } - }, - "required": [ - "amount", - "payeeAccount", - "state", - "transactions" - ] - } - }, - "reportUrl": { - "type": "string" - } - }, - "required": [ - "payoutId", - "createdAt", - "state", - "status", - "paymentAccount", - "instructionSet" - ] - }, - "description": "Create a payout instruction set.\n\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoints include APIs available only for customers with Payments Engine enabled on their accounts.
\n
These endpoints are currently in beta and might be subject to changes.
\n
If you want to learn more about Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or email CSM@fireblocks.com.
\n
Create a payout instruction set.
\nA payout instruction set is a set of instructions for distributing payments from a single payment account to a list of payee accounts.
\nThe instruction set defines:
\n
    \n
  • the payment account and its account type (vault, exchange, or fiat).
  • \n
  • the account type (vault account, exchange account, whitelisted address, network connection, fiat account, or merchant account), the amount, and the asset of payment for each payee account.
  • \n
\n" - }, - { - "method": "post", - "path": "/payments/payout/{payoutId}/actions/execute", - "name": "payments_payout_actions_execute_postByPayoutid", - "parameters": [ - { - "type": "string", - "description": "the payout id received from the creation of the payout instruction set" - } - ], - "output": { - "type": "object", - "properties": { - "payoutId": { - "type": "string" - } - }, - "required": [ - "payoutId" - ] - }, - "description": "Execute a payout instruction set.\n\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoints include APIs available only for customers with Payments Engine enabled on their accounts.
\n
These endpoints are currently in beta and might be subject to changes.
\n
If you want to learn more about Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or email CSM@fireblocks.com.
\n
Execute a payout instruction set.
\n
The instruction set will be verified and executed.
\nSource locking
\nIf you are executing a payout instruction set from a payment account with an already active payout the active payout will complete before the new payout instruction set can be executed.
\nYou cannot execute the same payout instruction set more than once.\n" - }, - { - "method": "get", - "path": "/payments/payout/{payoutId}", - "name": "payments_payout_getByPayoutid", - "parameters": [ - { - "type": "string", - "description": "the payout id received from the creation of the payout instruction set" - } - ], - "output": { - "type": "object", - "properties": { - "payoutId": { - "type": "string" - }, - "paymentAccount": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "VAULT_ACCOUNT", - "EXCHANGE_ACCOUNT", - "FIAT_ACCOUNT" - ] - } - } - }, - "createdAt": { - "type": "number" - }, - "state": { - "type": "string", - "enum": [ - "CREATED", - "FILE_FOUND", - "REQUESTED", - "TRANSLATED", - "PROCESSING", - "SUBMITTED", - "FINALIZED", - "INSUFFICIENT_BALANCE", - "FAILED" - ], - "description": "- CREATED - payout instruction set created with all its details\n- FILE_FOUND - new file found in the FTP\n- REQUESTED - payout requested with all its details\n- TRANSLATED - payout instruction account IDs identified and translated\n- PROCESSING - payout instruction set executed and is processing\n- SUBMITTED - transactions submitted for payout instructions\n- FINALIZED - payout finished processing, all transactions processed successfully\n- INSUFFICIENT_BALANCE - insufficient balance in the payment account (can be a temporary state)\n- FAILED - one or more of the payout instructions failed\n" - }, - "status": { - "type": "string", - "enum": [ - "REGISTERED", - "VERIFYING", - "IN_PROGRESS", - "DONE", - "INSUFFICIENT_BALANCE", - "FAILED" - ], - "description": "- REQUESTED\tpayout requested with all its details\n- VERIFIED\tpayout instruction set details were verified\n- PROCESSING\tpayout instruction set executed and is processing\n- FINALIZED\tpayout done (all payout instructions completed successfully)\n- INSUFFICIENT_BALANCE\tinsufficient balance in the payment account (can be a temporary state)\n- FAILED\tone or more of the payout instructions failed\n" - }, - "reasonOfFailure": { - "type": "string", - "description": "
    \n
  • INSUFFICIENT_BALANCE
  • \n
  • SOURCE_TRANSLATION
  • \n
  • SOURCE_NOT_UNIQUE
  • \n
  • SOURCE_NOT_FOUND
  • \n
  • SOURCE_TYPE_NOT_SUPPORTED
  • \n
  • EMPTY_SOURCE
  • \n
  • DESTINATION_TRANSLATION
  • \n
  • DESTINATION_NOT_UNIQUE
  • \n
  • DESTINATION_NOT_FOUND
  • \n
  • EMPTY_DESTINATION
  • \n
  • PARSING
  • \n
  • UNKNOWN
  • \n
  • FIREBLOCKS_CLIENT
  • \n
  • TRANSACTION_SUBMISSION
  • \n
\n" - }, - "initMethod": { - "type": "string", - "enum": [ - "FILE", - "API" - ] - }, - "instructionSet": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "payeeAccount": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "VAULT_ACCOUNT", - "EXCHANGE_ACCOUNT", - "INTERNAL_WALLET", - "EXTERNAL_WALLET", - "NETWORK_CONNECTION", - "FIAT_ACCOUNT" - ], - "description": "- VAULT_ACCOUNT \ta native Fireblocks vault account\n- EXCHANGE_ACCOUNT \ta third-party exchange account\n- INTERNAL_WALLET \ta whitelisted address marked as internal to the workspace/organization\n- EXTERNAL_WALLET\ta whitelisted address marked as external\n- NETWORK_CONNECTION\ta member of the Fireblocks network\n- FIAT_ACCOUNT\ta third-party account of a fiat bank (Signature, BCB, etc)\n" - } - } - }, - "amount": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "assetId": { - "type": "string" - } - }, - "required": [ - "amount", - "assetId" - ] - }, - "state": { - "type": "string", - "enum": [ - "NOT_STARTED", - "TRANSACTION_SENT", - "COMPLETED", - "FAILED", - "TRANSLATION_ERROR", - "SKIPPED" - ], - "description": "- NOT_STARTED\t- waiting to start\n- TRANSACTION_SENT - an underlying transaction was sent\n- COMPLETED\t- completed successfully\n- FAILED - failed\n- TRANSLATION_ERROR -lookup of the destination failed (due to changes in the underlying whitelisted external wallet or similar)\n- SKIPPED- no transaction(s) created for this instruction\n" - }, - "transactions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "SUBMITTED", - "QUEUED", - "PENDING_AUTHORIZATION", - "PENDING_SIGNATURE", - "BROADCASTING", - "PENDING_3RD_PARTY_MANUAL_APPROVAL", - "PENDING_3RD_PARTY", - "PENDING", - "CONFIRMING", - "CONFIRMED", - "COMPLETED", - "PARTIALLY_COMPLETED", - "PENDING_AML_SCREENING", - "CANCELLING", - "CANCELLED", - "REJECTED", - "BLOCKED", - "FAILED", - "TIMEOUT" - ] - }, - "timestamp": { - "type": "number", - "format": "date-time" - }, - "instructionId": { - "type": "string" - } - }, - "required": [ - "id", - "state" - ] - } - } - }, - "required": [ - "amount", - "payeeAccount", - "state", - "transactions" - ] - } - }, - "reportUrl": { - "type": "string" - } - }, - "required": [ - "payoutId", - "createdAt", - "state", - "status", - "paymentAccount", - "instructionSet" - ] - }, - "description": "Get the status of a payout instruction set.\n\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoints include APIs available only for customers with Payments Engine enabled on their accounts.
\n
These endpoints are currently in beta and might be subject to changes.
\n
If you want to learn more about Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or email CSM@fireblocks.com.
\n" - }, - { - "method": "get", - "path": "/gas_station", - "name": "gas_station_get", - "parameters": [], - "output": { - "type": "object", - "properties": { - "balance": { - "type": "object" - }, - "configuration": { - "type": "object", - "properties": { - "gasThreshold": { - "type": "string" - }, - "gasCap": { - "type": "string" - }, - "maxGasPrice": { - "type": "string" - } - } - } - }, - "required": [ - "low", - "medium", - "high" - ] - }, - "description": "Get gas station settings.\n\nReturns gas station settings and ETH balance." - }, - { - "method": "get", - "path": "/gas_station/{assetId}", - "name": "gas_station_getByAssetid", - "parameters": [ - { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - } - ], - "output": { - "type": "object", - "properties": { - "balance": { - "type": "object" - }, - "configuration": { - "type": "object", - "properties": { - "gasThreshold": { - "type": "string" - }, - "gasCap": { - "type": "string" - }, - "maxGasPrice": { - "type": "string" - } - } - } - }, - "required": [ - "low", - "medium", - "high" - ] - }, - "description": "Get gas station settings by asset.\n\nReturns gas station settings and balances for a requested asset." - }, - { - "method": "put", - "path": "/gas_station/configuration", - "name": "gas_station_configuration_put", - "parameters": [ - { - "type": "object", - "properties": { - "gasThreshold": { - "type": "string" - }, - "gasCap": { - "type": "string" - }, - "maxGasPrice": { - "type": "string" - } - } - } - ], - "description": "Edit gas station settings.\n\nConfigures gas station settings for ETH." - }, - { - "method": "put", - "path": "/gas_station/configuration/{assetId}", - "name": "gas_station_configuration_putByAssetid", - "parameters": [ - { - "type": "string", - "x-fb-entity": "asset", - "description": "The ID of the asset" - }, - { - "type": "object", - "properties": { - "gasThreshold": { - "type": "string" - }, - "gasCap": { - "type": "string" - }, - "maxGasPrice": { - "type": "string" - } - } - } - ], - "description": "Edit gas station settings for an asset.\n\nConfigures gas station settings for a requested asset." - }, - { - "method": "get", - "path": "/users", - "name": "users_get", - "parameters": [], - "output": { - "type": "object", - "properties": { - "users": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "role": { - "type": "string" - }, - "email": { - "type": "string" - }, - "enabled": { - "type": "boolean" - } - } - } - } - } - }, - "description": "List users.\n\nList all users for the workspace.\n\nPlease note that this endpoint is available only for API keys with Admin permissions.\n" - }, - { - "method": "get", - "path": "/audits", - "name": "audits_get", - "parameters": [ - { - "type": "object", - "properties": {}, - "required": [] - } - ], - "description": "Get audit logs" - }, - { - "method": "post", - "path": "/off_exchange/add", - "name": "off_exchange_add_post", - "parameters": [ - { - "type": "object", - "properties": { - "transactionRequest": { - "type": "object", - "properties": { - "operation": { - "type": "string", - "enum": [ - "TRANSFER", - "BURN", - "CONTRACT_CALL", - "MINT", - "RAW", - "TYPED_MESSAGE" - ], - "description": "* `TRANSFER` - The default value for an operation. Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n" - }, - "note": { - "type": "string", - "description": "Custom note, not sent to the blockchain, to describe the transaction at your Fireblocks workspace.", - "example": "Ticket 123" - }, - "externalTxId": { - "type": "string", - "description": "An optional but highly recommended parameter. Fireblocks will reject future transactions with same ID. \n \nYou should set this to a unique ID representing the transaction, to avoid submitting the same transaction twice. This helps with cases where submitting the transaction responds with an error code due to Internet interruptions, but the transaction was actually sent and processed. To validate whether a transaction has been processed, [Find a specific transaction by external transaction ID](https://developers.fireblocks.com/reference/get_transactions-external-tx-id-externaltxid).\n \nThere is no specific format required for this parameter.", - "example": "00000000-0000-0000-0000-000000000000" - }, - "assetId": { - "type": "string", - "description": "The ID of the asset to transfer, for `TRANSFER`, `MINT` or `BURN` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)", - "x-fb-entity": "asset", - "example": "ETH" - }, - "source": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "VAULT_ACCOUNT", - "EXCHANGE_ACCOUNT", - "INTERNAL_WALLET", - "EXTERNAL_WALLET", - "NETWORK_CONNECTION", - "FIAT_ACCOUNT", - "COMPOUND", - "GAS_STATION", - "ONE_TIME_ADDRESS", - "UNKNOWN", - "END_USER_WALLET" - ] - }, - "subType": { - "type": "string", - "enum": [ - "BINANCE", - "BINANCEUS", - "BITFINEX", - "BITHUMB", - "BITMEX", - "BITSO", - "BITSTAMP", - "BITTREX", - "BLINC", - "BYBIT", - "CIRCLE", - "COINBASEEXCHANGE", - "COINBASEPRO", - "COINMETRO", - "COINSPRO", - "CRYPTOCOM", - "DERIBIT", - "GEMINI", - "HITBTC", - "HUOBI", - "INDEPENDENTRESERVE", - "KORBIT", - "KRAKEN", - "KRAKENINTL", - "KUCOIN", - "LIQUID", - "OKCOIN", - "OKEX", - "PAXOS", - "POLONIEX", - "External", - "Internal" - ] - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "walletId": { - "type": "string", - "format": "uuid" - } - }, - "required": [ - "type" - ] - }, - "destination": {}, - "destinations": { - "type": "array", - "description": "For UTXO based blockchains, you can send a single transaction to multiple destinations.", - "items": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "destination": {} - } - } - }, - "amount": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "0.02" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 0.02 - } - ], - "description": "For `TRANSFER` operations, the requested amount to transfer, in the asset’s unit. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "treatAsGrossAmount": { - "type": "boolean", - "description": "\"When set to `true`, the fee will be deducted from the requested amount.\"\n\n**Note**: This parameter can only be considered if a transaction’s asset is a base asset, such as ETH or MATIC. If the asset can’t be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account." - }, - "forceSweep": { - "type": "boolean", - "description": "For Polkadot, Kusama and Westend transactions only. When set to true, Fireblocks will empty the asset wallet.\n\n **Note:** If set to true when the source account is exactly 1 DOT, the transaction will fail. Any amount more or less than 1 DOT succeeds. This is a Polkadot blockchain limitation." - }, - "feeLevel": { - "type": "string", - "enum": [ - "LOW", - "MEDIUM", - "HIGH" - ], - "description": "For UTXO or EVM-based blockchains only. Defines the blockchain fee level which will be payed for the transaction. Alternatively, specific fee estimation parameters exist below." - }, - "fee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For UTXO-based blockchains, the fee per bytes in the asset’s smallest unit (Satoshi, Latoshi, etc.). For Ripple, the fee for the transaction. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "priorityFee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "2" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 2 - } - ], - "description": "For Ethereum-based blockchains only, the fee for EIP-1559 transaction pricing mechanism. Value is in Gwei. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "failOnLowFee": { - "type": "boolean", - "description": "When set to `true`, in case the current `MEDIUM` fee level is higher than the one specified in the transaction, the transaction will fail to avoid getting stuck with no confirmations." - }, - "maxFee": { - "description": "The maximum fee (gas price or fee per byte) that should be payed for the transaction. In case the current value of the requested `feeLevel` is higher than this requested maximum fee. Represented by a numeric string for accurate precision.", - "type": "string", - "example": "120" - }, - "gasLimit": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "21000" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 21000 - } - ], - "description": "For EVM-based blockchains only. Units of gas required to process the transaction. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "gasPrice": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For non-EIP-1559, EVM-based transactions. Price per gas unit (in Ethereum this is specified in Gwei). Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "networkFee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For EVM-based blockchains only. The total transaction fee in the blockchain’s largest unit. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated. - The transaction blockchain fee.\n- For Ethereum, you can't pass gasPrice, gasLimit and networkFee all together.\n- A numeric value representation is required." - }, - "replaceTxByHash": { - "type": "string", - "description": "For EVM-based blockchains only. In case a transaction is stuck, specify the hash of the stuck transaction to replace it by this transaction with a higher fee, or to replace it with this transaction with a zero fee and drop it from the blockchain.", - "example": "00000000-0000-0000-0000-000000000000" - }, - "extraParameters": { - "type": "object", - "properties": {}, - "description": "Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n" - }, - "customerRefId": { - "type": "string", - "description": "The ID for AML providers to associate the owner of funds with transactions.", - "example": "abcdef" - }, - "autoStaking": { - "type": "boolean", - "description": "This feature is no longer supported." - }, - "networkStaking": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "This feature is no longer supported." - }, - "cpuStaking": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "This feature is no longer supported." - } - } - }, - "isSrcCollateral": { - "type": "boolean", - "description": "optional" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The ID of the transaction." - }, - "status": { - "type": "string", - "description": "The primary status of the transaction. For details, see [Primary transaction statuses.] (https://developers.fireblocks.com/reference/primary-transaction-statuses)" - }, - "systemMessages": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "WARN", - "BLOCK" - ] - }, - "message": { - "type": "string", - "description": "A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.", - "example": "Slow transaction processing. Outgoing transactions might be stuck." - } - } - } - } - }, - "description": "add collateral, create deposit request" - }, - { - "method": "post", - "path": "/off_exchange/remove", - "name": "off_exchange_remove_post", - "parameters": [ - { - "type": "object", - "properties": { - "transactionRequest": { - "type": "object", - "properties": { - "operation": { - "type": "string", - "enum": [ - "TRANSFER", - "BURN", - "CONTRACT_CALL", - "MINT", - "RAW", - "TYPED_MESSAGE" - ], - "description": "* `TRANSFER` - The default value for an operation. Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n" - }, - "note": { - "type": "string", - "description": "Custom note, not sent to the blockchain, to describe the transaction at your Fireblocks workspace.", - "example": "Ticket 123" - }, - "externalTxId": { - "type": "string", - "description": "An optional but highly recommended parameter. Fireblocks will reject future transactions with same ID. \n \nYou should set this to a unique ID representing the transaction, to avoid submitting the same transaction twice. This helps with cases where submitting the transaction responds with an error code due to Internet interruptions, but the transaction was actually sent and processed. To validate whether a transaction has been processed, [Find a specific transaction by external transaction ID](https://developers.fireblocks.com/reference/get_transactions-external-tx-id-externaltxid).\n \nThere is no specific format required for this parameter.", - "example": "00000000-0000-0000-0000-000000000000" - }, - "assetId": { - "type": "string", - "description": "The ID of the asset to transfer, for `TRANSFER`, `MINT` or `BURN` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)", - "x-fb-entity": "asset", - "example": "ETH" - }, - "source": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "VAULT_ACCOUNT", - "EXCHANGE_ACCOUNT", - "INTERNAL_WALLET", - "EXTERNAL_WALLET", - "NETWORK_CONNECTION", - "FIAT_ACCOUNT", - "COMPOUND", - "GAS_STATION", - "ONE_TIME_ADDRESS", - "UNKNOWN", - "END_USER_WALLET" - ] - }, - "subType": { - "type": "string", - "enum": [ - "BINANCE", - "BINANCEUS", - "BITFINEX", - "BITHUMB", - "BITMEX", - "BITSO", - "BITSTAMP", - "BITTREX", - "BLINC", - "BYBIT", - "CIRCLE", - "COINBASEEXCHANGE", - "COINBASEPRO", - "COINMETRO", - "COINSPRO", - "CRYPTOCOM", - "DERIBIT", - "GEMINI", - "HITBTC", - "HUOBI", - "INDEPENDENTRESERVE", - "KORBIT", - "KRAKEN", - "KRAKENINTL", - "KUCOIN", - "LIQUID", - "OKCOIN", - "OKEX", - "PAXOS", - "POLONIEX", - "External", - "Internal" - ] - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "walletId": { - "type": "string", - "format": "uuid" - } - }, - "required": [ - "type" - ] - }, - "destination": {}, - "destinations": { - "type": "array", - "description": "For UTXO based blockchains, you can send a single transaction to multiple destinations.", - "items": { - "type": "object", - "properties": { - "amount": { - "type": "string" - }, - "destination": {} - } - } - }, - "amount": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "0.02" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 0.02 - } - ], - "description": "For `TRANSFER` operations, the requested amount to transfer, in the asset’s unit. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "treatAsGrossAmount": { - "type": "boolean", - "description": "\"When set to `true`, the fee will be deducted from the requested amount.\"\n\n**Note**: This parameter can only be considered if a transaction’s asset is a base asset, such as ETH or MATIC. If the asset can’t be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account." - }, - "forceSweep": { - "type": "boolean", - "description": "For Polkadot, Kusama and Westend transactions only. When set to true, Fireblocks will empty the asset wallet.\n\n **Note:** If set to true when the source account is exactly 1 DOT, the transaction will fail. Any amount more or less than 1 DOT succeeds. This is a Polkadot blockchain limitation." - }, - "feeLevel": { - "type": "string", - "enum": [ - "LOW", - "MEDIUM", - "HIGH" - ], - "description": "For UTXO or EVM-based blockchains only. Defines the blockchain fee level which will be payed for the transaction. Alternatively, specific fee estimation parameters exist below." - }, - "fee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For UTXO-based blockchains, the fee per bytes in the asset’s smallest unit (Satoshi, Latoshi, etc.). For Ripple, the fee for the transaction. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "priorityFee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "2" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 2 - } - ], - "description": "For Ethereum-based blockchains only, the fee for EIP-1559 transaction pricing mechanism. Value is in Gwei. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "failOnLowFee": { - "type": "boolean", - "description": "When set to `true`, in case the current `MEDIUM` fee level is higher than the one specified in the transaction, the transaction will fail to avoid getting stuck with no confirmations." - }, - "maxFee": { - "description": "The maximum fee (gas price or fee per byte) that should be payed for the transaction. In case the current value of the requested `feeLevel` is higher than this requested maximum fee. Represented by a numeric string for accurate precision.", - "type": "string", - "example": "120" - }, - "gasLimit": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)", - "example": "21000" - }, - { - "type": "number", - "description": "Number (deprecated)", - "example": 21000 - } - ], - "description": "For EVM-based blockchains only. Units of gas required to process the transaction. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "gasPrice": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For non-EIP-1559, EVM-based transactions. Price per gas unit (in Ethereum this is specified in Gwei). Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated." - }, - "networkFee": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "For EVM-based blockchains only. The total transaction fee in the blockchain’s largest unit. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated. - The transaction blockchain fee.\n- For Ethereum, you can't pass gasPrice, gasLimit and networkFee all together.\n- A numeric value representation is required." - }, - "replaceTxByHash": { - "type": "string", - "description": "For EVM-based blockchains only. In case a transaction is stuck, specify the hash of the stuck transaction to replace it by this transaction with a higher fee, or to replace it with this transaction with a zero fee and drop it from the blockchain.", - "example": "00000000-0000-0000-0000-000000000000" - }, - "extraParameters": { - "type": "object", - "properties": {}, - "description": "Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n" - }, - "customerRefId": { - "type": "string", - "description": "The ID for AML providers to associate the owner of funds with transactions.", - "example": "abcdef" - }, - "autoStaking": { - "type": "boolean", - "description": "This feature is no longer supported." - }, - "networkStaking": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "This feature is no longer supported." - }, - "cpuStaking": { - "oneOf": [ - { - "type": "string", - "description": "Numeric string (recommended)" - }, - { - "type": "number", - "description": "Number (deprecated)" - } - ], - "description": "This feature is no longer supported." - } - } - }, - "isDstCollateral": { - "type": "boolean", - "description": "optional" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The ID of the transaction." - }, - "status": { - "type": "string", - "description": "The primary status of the transaction. For details, see [Primary transaction statuses.] (https://developers.fireblocks.com/reference/primary-transaction-statuses)" - }, - "systemMessages": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "WARN", - "BLOCK" - ] - }, - "message": { - "type": "string", - "description": "A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.", - "example": "Slow transaction processing. Outgoing transactions might be stuck." - } - } - } - } - }, - "description": "remove collateral, create withdraw request" - }, - { - "method": "get", - "path": "/off_exchange/collateral_accounts/{mainExchangeAccountId}", - "name": "off_exchange_collateral_accounts_getByMainexchangeaccountid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The id of the main exchange account for which the requested collateral account is associated with" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "BINANCE", - "BINANCEUS", - "BITFINEX", - "BITHUMB", - "BITMEX", - "BITSO", - "BITSTAMP", - "BITTREX", - "CIRCLE", - "COINBASEPRO", - "COINMETRO", - "COINSPRO", - "CRYPTOCOM", - "DERIBIT", - "FTX", - "FIXUS", - "GEMINI", - "HITBTC", - "HUOBI", - "KORBIT", - "KRAKEN", - "LIQUID", - "POLONIEX", - "OKCOIN", - "OKEX", - "SEEDCX" - ] - }, - "name": { - "type": "string", - "description": "Display name of the exchange account" - }, - "status": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "total": { - "type": "string" - }, - "available": { - "type": "string" - } - } - } - }, - "tradingAccounts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "name": { - "type": "string" - }, - "assets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "balance": { - "type": "string" - }, - "lockedAmount": { - "type": "string" - }, - "total": { - "type": "string" - }, - "available": { - "type": "string" - } - } - } - } - } - } - }, - "isSubaccount": { - "type": "boolean", - "description": "True if the account is a subaccount in an exchange" - }, - "mainAccountId": { - "description": "if the account is a sub-account, the ID of the main account", - "type": "string" - } - } - }, - "description": "Find a specific collateral exchange account.\n\nReturns a collateral account by mainExchangeAccountId." - }, - { - "method": "post", - "path": "/webhooks/resend", - "name": "webhooks_resend_post", - "parameters": [], - "output": { - "type": "object", - "properties": { - "messagesCount": { - "type": "number" - } - } - }, - "description": "Resend failed webhooks.\n\nResends all failed webhook notifications." - }, - { - "method": "post", - "path": "/webhooks/resend/{txId}", - "name": "webhooks_resend_postByTxid", - "parameters": [ - { - "type": "string", - "minimum": 1, - "description": "The ID of the transaction for webhooks" - }, - {} - ], - "description": "Resend failed webhooks for a transaction by ID.\n\nResends failed webhook notifications for a transaction by ID." - }, - { - "method": "get", - "path": "/nfts/ownership/tokens", - "name": "nfts_ownership_tokens_get", - "parameters": [ - { - "type": "object", - "properties": { - "vaultAccountIds": { - "type": "string", - "description": "A comma separated list of Vault Account IDs. Up to 100 are allowed in a single request" - }, - "ids": { - "type": "string", - "description": "A comma separated list of NFT IDs. Up to 100 are allowed in a single request." - }, - "collectionIds": { - "type": "string", - "description": "A comma separated list of collection IDs. Up to 100 are allowed in a single request." - }, - "pageCursor": { - "type": "string", - "description": "Page cursor to fetch" - }, - "pageSize": { - "minimum": 1, - "maximum": 100, - "type": "number", - "description": "Items per page (max 100)" - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "ownershipLastUpdateTime", - "name", - "collection.name", - "blockchainDescriptor" - ] - }, - "description": "Sort by param, it can be one param or a list of params separated by comma" - }, - "search": { - "maximum": 100, - "type": "string", - "description": "Search owned tokens and their collections. Possible criteria for search: token name and id within the contract/collection, collection name, blockchain descriptor and name." - } - }, - "required": [] - } - ], - "output": {}, - "description": "List all owned tokens (paginated).\n\nReturns all tokens and their data in your workspace.\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n" - }, - { - "method": "put", - "path": "/nfts/ownership/tokens", - "name": "nfts_ownership_tokens_put", - "parameters": [ - { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "string", - "description": "Vault account filter" - } - }, - "required": [ - "vaultAccountId" - ] - } - ], - "description": "Refresh vault account tokens.\n\nUpdates all tokens and balances per blockchain and vault account.\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n" - }, - { - "method": "get", - "path": "/nfts/ownership/collections", - "name": "nfts_ownership_collections_get", - "parameters": [ - { - "type": "object", - "properties": { - "search": { - "maximum": 100, - "type": "string", - "description": "Search owned collections. Possible criteria for search: collection name, collection contract address." - }, - "pageCursor": { - "type": "string", - "description": "Page cursor to fetch" - }, - "pageSize": { - "minimum": 1, - "maximum": 100, - "type": "number", - "description": "Items per page (max 100)" - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "name" - ] - }, - "description": "Sort by param, it can be one param or a list of params separated by comma" - } - }, - "required": [] - } - ], - "output": {}, - "description": "List owned collections (paginated).\n\nReturns all collections in your workspace\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n" - }, - { - "method": "get", - "path": "/nfts/tokens/{id}", - "name": "nfts_tokens_getById", - "parameters": [ - { - "type": "string", - "description": "NFT ID" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The Fireblocks NFT asset id" - }, - "tokenId": { - "type": "string", - "description": "Token id within the contract/collection" - }, - "standard": { - "type": "string", - "description": "ERC721 / ERC1155" - }, - "metadataURI": { - "type": "string", - "description": "URL of the original token JSON metadata" - }, - "cachedMetadataURI": { - "type": "string", - "description": "URL of the cached token JSON metadata" - }, - "media": { - "description": "Media items extracted from metadata JSON", - "type": "array", - "items": { - "type": "object", - "properties": { - "url": { - "type": "string", - "description": "Cached accessible URL" - }, - "contentType": { - "type": "string", - "enum": [ - "IMAGE", - "VIDEO", - "ANIMATION", - "THREE_D", - "TEXT", - "GIF", - "UNKNOWN_TYPE", - "SVG", - "AUDIO" - ], - "description": "Media type" - } - }, - "required": [ - "url", - "contentType" - ] - } - }, - "collection": { - "description": "Parent collection information", - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "symbol": { - "type": "string" - } - } - }, - "blockchainDescriptor": { - "type": "string", - "enum": [ - "ETH", - "ETH_TEST3", - "POLYGON", - "POLYGON_TEST_MUMBAI" - ] - }, - "description": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "id", - "tokenId", - "standard", - "media", - "blockchainDescriptor", - "description", - "name" - ] - }, - "description": "List token data by ID.\n\nReturns the requested token data.\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n" - }, - { - "method": "put", - "path": "/nfts/tokens/{id}", - "name": "nfts_tokens_putById", - "parameters": [ - { - "type": "string", - "description": "NFT ID" - } - ], - "description": "Refresh token metadata.\n\nUpdates the latest token metadata.\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n" - }, - { - "method": "get", - "path": "/nfts/tokens", - "name": "nfts_tokens_get", - "parameters": [ - { - "type": "object", - "properties": { - "ids": { - "type": "string", - "description": "A comma separated list of NFT IDs. Up to 100 are allowed in a single request." - }, - "pageCursor": { - "type": "string", - "description": "Page cursor to fetch" - }, - "pageSize": { - "minimum": 1, - "maximum": 100, - "type": "number", - "description": "Items per page (max 100)" - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "collection.name", - "name", - "blockchainDescriptor" - ] - }, - "description": "Sort by param, it can be one param or a list of params separated by comma" - } - }, - "required": [ - "ids" - ] - } - ], - "output": {}, - "description": "List tokens by IDs.\n\nReturns the requested tokens data\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n" - }, - { - "method": "put", - "path": "/nfts/ownership/tokens/{id}/status", - "name": "nfts_ownership_tokens_status_putById", - "parameters": [ - { - "type": "string", - "description": "NFT ID" - }, - { - "type": "object", - "properties": { - "status": { - "type": "string", - "enum": [ - "LISTED", - "ARCHIVED" - ] - } - }, - "required": [ - "status" - ] - } - ], - "description": "Update token ownership status.\n\nUpdates token ownership status for a tenant, in all tenant vaults.\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n" - }, - { - "method": "get", - "path": "/connections", - "name": "connections_get", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "userId": { - "type": "string" - }, - "vaultAccountId": { - "type": "number" - }, - "connectionMethod": { - "type": "string" - }, - "feeLevel": { - "type": "string" - }, - "appUrl": { - "type": "string" - }, - "appName": { - "type": "string" - }, - "pageSize": { - "type": "number", - "default": 10, - "maximum": 50, - "description": "Amount of results to return in the next page." - }, - "next": { - "type": "string", - "description": "Cursor to the next page" - } - }, - "required": [] - } - ], - "output": { - "type": "object", - "properties": { - "data": { - "description": "Array with the requested Web3 connection's data", - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Id of the connection", - "example": "4e9e7051-f3b2-48e9-8ee6-b12492552657" - }, - "userId": { - "type": "string", - "description": "Id of the user that created the connection" - }, - "sessionMetadata": { - "description": "Metadata of the connection (provided by the dapp)", - "type": "object", - "properties": { - "appUrl": { - "type": "string" - }, - "appName": { - "type": "string" - }, - "appDescription": { - "type": "string" - }, - "appIcon": { - "type": "string" - } - } - }, - "vaultAccountId": { - "type": "number", - "description": "The vault to connect", - "example": 1 - }, - "feeLevel": { - "type": "string", - "enum": [ - "MEDIUM", - "HIGH" - ], - "description": "The default fee level" - }, - "chainIds": { - "description": "The chains approved for the connection", - "example": [ - "ETH", - "ETH_TEST", - "SOL" - ], - "type": "array", - "items": { - "type": "string" - } - }, - "connectionType": { - "type": "string", - "enum": [ - "WalletConnect" - ], - "description": "The connection's type" - }, - "connectionMethod": { - "type": "string", - "enum": [ - "DESKTOP", - "MOBILE", - "API" - ], - "description": "The method through which the connection was established" - }, - "creationDate": { - "format": "date-time", - "type": "string", - "description": "Timestamp of the session's creation" - } - }, - "required": [ - "id", - "userId", - "sessionMetadata", - "vaultAccountId", - "feeLevel", - "chainIds", - "connectionType", - "connectionMethod", - "creationDate" - ] - } - }, - "paging": { - "type": "object", - "properties": { - "next": { - "type": "string", - "description": "Cursor to the next page" - } - }, - "required": [ - "next" - ] - } - }, - "required": [ - "data" - ] - }, - "description": "List all open Web3 connections.\n\nGet open Web3 connections." - }, - { - "method": "post", - "path": "/connections/wc", - "name": "connections_wc_post", - "parameters": [ - { - "type": "object", - "properties": { - "vaultAccountId": { - "type": "number", - "description": "The ID of the vault to connect to the Web3 connection.", - "example": 1 - }, - "feeLevel": { - "type": "string", - "enum": [ - "MEDIUM", - "HIGH" - ], - "description": "The default fee level. Valid values are `MEDIUM` and `HIGH`." - }, - "uri": { - "type": "string", - "description": "The WalletConnect uri provided by the dapp.", - "example": "wc:77752975-906f-48f5-b59f-047826ee947e@1?bridge=https%3A%2F%2F0.bridge.walletconnect.org&key=64be99adc6086b7a729b0ec8c7e1f174927ab92e84f5c6f9527050225344a637" - }, - "chainIds": { - "description": "The ID of the blockchain network used in the Web3 connection.", - "example": [ - "ETH", - "ETH_TEST" - ], - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "vaultAccountId", - "feeLevel", - "uri", - "chainIds" - ] - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The ID of the Web3 connection initiated.", - "example": "4e9e7051-f3b2-48e9-8ee6-b12492552657" - }, - "sessionMetadata": { - "description": "Metadata of the Web3 connection (provided by the DApp).", - "type": "object", - "properties": { - "appUrl": { - "type": "string" - }, - "appName": { - "type": "string" - }, - "appDescription": { - "type": "string" - }, - "appIcon": { - "type": "string" - } - } - } - }, - "required": [ - "id", - "sessionMetadata" - ] - }, - "description": "Create a new Web3 connection.\n\nInitiate a new Web3 connection.\n\n* Note: After this succeeds, make a request to `PUT /v1/connections/wc/{id}` (below) to approve or reject the new Web3 connection." - }, - { - "method": "put", - "path": "/connections/wc/{id}", - "name": "connections_wc_putById", - "parameters": [ - { - "type": "string", - "description": "The ID of the initiated Web3 connection to approve." - }, - { - "type": "object", - "properties": { - "approve": { - "type": "boolean", - "description": "Approval of the initiated Web3 connection." - } - }, - "required": [ - "approve" - ] - } - ], - "description": "Respond to a pending Web3 connection request.\n\nSubmit a response to *approve* or *reject* an initiated Web3 connection.\n* Note: This call is used to complete your `POST /v1/connections/wc/` request.\n\nAfter this succeeds, your new Web3 connection is created and functioning." - }, - { - "method": "delete", - "path": "/connections/wc/{id}", - "name": "connections_wc_eraseById", - "parameters": [ - { - "type": "string", - "description": "The ID of the existing Web3 connection to remove." - } - ], - "description": "Remove an existing Web3 connection.\n\nRemove a Web3 connection" - }, - { - "method": "post", - "path": "/screening/travel_rule/transaction/validate", - "name": "screening_travel_rule_transaction_validate_post", - "parameters": [ - { - "type": "object", - "properties": { - "transactionAsset": { - "type": "string", - "example": "BTC", - "description": "Transaction asset symbol BTC,ETH)" - }, - "destination": { - "type": "string", - "example": "bc1qxy2kgdygjrsqtzq2n0yrf1234p83kkfjhx0wlh", - "description": "Transaction destination address" - }, - "transactionAmount": { - "type": "string", - "example": "10", - "description": "Transaction amount in the transaction asset" - }, - "originatorVASPdid": { - "type": "string", - "example": "did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2", - "description": "This is the identifier assigned to your VASP" - }, - "originatorEqualsBeneficiary": { - "type": "boolean", - "description": "\"True\" if the originator and beneficiary is the same person and you therefore do not need to collect any information. \"False\" if it is a third-party transfer." - }, - "travelRuleBehavior": { - "type": "boolean", - "description": "This will also check if the transaction is a TRAVEL_RULE in the beneficiary VASP's jurisdiction" - }, - "beneficiaryVASPdid": { - "type": "string", - "example": "did:ethr:0x46a7ed5813ce735387df2bfb245bd7722e0de992", - "description": "This is the identifier assigned to the VASP the funds are being sent to" - }, - "beneficiaryVASPname": { - "type": "string", - "example": "HelloCrypto", - "description": "Beneficiary VASP name" - }, - "beneficiaryName": { - "type": "string", - "example": "John Doe", - "description": "Beneficiary name" - }, - "beneficiaryAccountNumber": { - "type": "string", - "example": "1234-1234-1234-12234", - "description": "Beneficiary name" - }, - "beneficiaryAddress": { - "example": "{\"addressLine: [Wayne Manor, Gotham City, New York, USA]\"}", - "description": "Beneficiary name", - "type": "object", - "properties": { - "street": { - "type": "string", - "example": "1234 Example St", - "description": "Street address" - }, - "city": { - "type": "string", - "example": "New York", - "description": "City" - }, - "state": { - "type": "string", - "example": "NY", - "description": "State or province" - }, - "postalCode": { - "type": "string", - "example": "10001", - "description": "Postal or ZIP code" - } - } - } - }, - "required": [ - "transactionAsset", - "destination", - "transactionAmount", - "originatorVASPdid", - "originatorEqualsBeneficiary", - "travelRuleBehavior", - "beneficiaryVASPdid", - "beneficiaryVASPname", - "beneficiaryName", - "beneficiaryAccountNumber", - "beneficiaryAddress" - ] - } - ], - "output": { - "type": "object", - "properties": { - "isValid": { - "type": "boolean", - "description": "\"isValid\" will tell you if you have collected all the information needed for the travel rule data transfer. Once this field = \"true\", you can move on to the next step which is to transfer the front-end information to your back-end and perform Travel Rule Transaction create" - }, - "type": { - "type": "string", - "description": "\"type\" will tell you if the virtual asset value converted to FIAT value of the withdrawal request is above (=TRAVELRULE) or below (=BELOW_THRESHOLD) the threshold in your jurisdiction. If it is to an unhosted wallet which does not require travel rule information to be sent and only collected, it will say NON_CUSTODIAL.", - "example": "TRAVELRULE" - }, - "beneficiaryAddressType": { - "type": "string", - "description": "\"beneficiaryAddressType\" will tell you if your blockchain analytics provider or internal address book has been able to identify the wallet address.", - "example": "UNKNOWN" - }, - "addressSource": { - "type": "string", - "description": "\"addressSource\" will tell you if the address was found in your internal address book or identified by the blockchain analytics provider.", - "example": "UNKNOWN" - }, - "beneficiaryVASPdid": { - "type": "string", - "description": "The VASP DID of the beneficiary VASP", - "example": "did:ethr:0x46a7ed5813ce735387df2bfb245bd7722e0de992" - }, - "beneficiaryVASPname": { - "type": "string", - "description": "\"beneficiaryVASPname\" will tell you the name of the VASP that has been identified as the owner of the wallet address. This name is used in a subsequent call to get its DID.", - "example": "Fireblocks" - }, - "warnings": { - "description": "\"errors/warnings\" will tell you what information about the beneficiary you need to collect from the sender.", - "example": [ - "optional-beneficiaryAccountNumber" - ], - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "isValid", - "type", - "beneficiaryAddressType", - "addressSource", - "beneficiaryVASPdid", - "beneficiaryVASPname", - "warnings" - ] - }, - "description": "Validate Travel Rule Transaction.\n\nValidate Travel Rule transactions.\n\nChecks what beneficiary VASP details are required by your jurisdiction and the beneficiary's jurisdiction.\n\n**Note:** The reference content in this section documents the Travel Rule beta endpoint. The beta endpoint includes APIs that are currently in preview and aren't yet generally available.\n\nTo enroll in the beta and enable this endpoint, contact your Fireblocks Customer Success Manager or send an email to [CSM@fireblocks.com](mailto:CSM@fireblocks.com)." - }, - { - "method": "post", - "path": "/screening/travel_rule/transaction/validate/full", - "name": "screening_travel_rule_transaction_validate_full_post", - "parameters": [ - { - "type": "object", - "properties": { - "transactionAsset": { - "type": "string", - "description": "The asset involved in the transaction" - }, - "transactionAmount": { - "type": "string", - "description": "The amount of the transaction" - }, - "originatorDid": { - "type": "string", - "description": "The DID of the transaction originator" - }, - "beneficiaryDid": { - "type": "string", - "description": "The DID of the transaction beneficiary" - }, - "originatorVASPdid": { - "type": "string", - "description": "The VASP ID of the transaction originator" - }, - "beneficiaryVASPdid": { - "type": "string", - "description": "The VASP ID of the transaction beneficiary" - }, - "beneficiaryVASPname": { - "type": "string", - "description": "The name of the VASP acting as the beneficiary" - }, - "transactionBlockchainInfo": { - "description": "Information about the blockchain transaction", - "type": "object", - "properties": { - "txHash": { - "type": "string" - }, - "origin": { - "type": "string" - }, - "destination": { - "type": "string" - } - } - }, - "originator": { - "description": "Information about the originator of the transaction", - "type": "object", - "properties": { - "fullName": { - "type": "string" - }, - "dateOfBirth": { - "type": "string" - }, - "placeOfBirth": { - "type": "string" - }, - "address": { - "type": "string" - }, - "identificationNumber": { - "type": "string" - }, - "nationality": { - "type": "string" - }, - "countryOfResidence": { - "type": "string" - }, - "taxIdentificationNumber": { - "type": "string" - }, - "customerNumber": { - "type": "string" - } - } - }, - "beneficiary": { - "description": "Information about the beneficiary of the transaction", - "type": "object", - "properties": { - "fullName": { - "type": "string" - }, - "dateOfBirth": { - "type": "string" - }, - "placeOfBirth": { - "type": "string" - }, - "address": { - "type": "string" - }, - "identificationNumber": { - "type": "string" - }, - "nationality": { - "type": "string" - }, - "countryOfResidence": { - "type": "string" - }, - "taxIdentificationNumber": { - "type": "string" - }, - "customerNumber": { - "type": "string" - } - } - }, - "encrypted": { - "type": "string", - "description": "Encrypted data related to the transaction" - }, - "protocol": { - "type": "string", - "description": "The protocol used to perform the travel rule" - }, - "notificationEmail": { - "type": "string", - "description": "The email address where a notification should be sent upon completion of the travel rule" - }, - "skipBeneficiaryDataValidation": { - "type": "boolean", - "description": "Whether to skip validation of beneficiary data" - }, - "travelRuleBehavior": { - "type": "boolean", - "description": "Whether to check if the transaction is a TRAVEL_RULE in the beneficiary VASP's jurisdiction" - }, - "originatorProof": { - "description": "Ownership proof related to the originator of the transaction", - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "passport", - "description": "Type of ownership proof" - }, - "id": { - "type": "string", - "example": "123456789", - "description": "Identification number" - }, - "name": { - "type": "string", - "example": "Alice", - "description": "Name of owner" - }, - "country": { - "type": "string", - "example": "US", - "description": "Country of issuance" - }, - "issueDate": { - "type": "string", - "example": "2022-01-01", - "description": "Date of issuance" - }, - "issuer": { - "type": "string", - "example": "US Government", - "description": "Name of issuing entity" - } - } - }, - "beneficiaryProof": { - "description": "Ownership proof related to the beneficiary of the transaction", - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "passport", - "description": "Type of ownership proof" - }, - "id": { - "type": "string", - "example": "123456789", - "description": "Identification number" - }, - "name": { - "type": "string", - "example": "Alice", - "description": "Name of owner" - }, - "country": { - "type": "string", - "example": "US", - "description": "Country of issuance" - }, - "issueDate": { - "type": "string", - "example": "2022-01-01", - "description": "Date of issuance" - }, - "issuer": { - "type": "string", - "example": "US Government", - "description": "Name of issuing entity" - } - } - }, - "pii": { - "description": "Personal identifiable information related to the transaction", - "type": "object", - "properties": { - "fullName": { - "type": "string" - }, - "dateOfBirth": { - "type": "string" - }, - "placeOfBirth": { - "type": "string" - }, - "address": { - "type": "string" - }, - "identificationNumber": { - "type": "string" - }, - "nationality": { - "type": "string" - }, - "countryOfResidence": { - "type": "string" - }, - "taxIdentificationNumber": { - "type": "string" - }, - "customerNumber": { - "type": "string" - } - } - } - }, - "required": [ - "transactionAsset", - "transactionAmount", - "originatorDid", - "beneficiaryDid", - "originatorVASPdid", - "beneficiaryVASPdid", - "beneficiaryVASPname", - "transactionBlockchainInfo", - "originator", - "beneficiary", - "encrypted", - "protocol", - "notificationEmail", - "skipBeneficiaryDataValidation", - "travelRuleBehavior", - "originatorProof", - "beneficiaryProof", - "pii" - ] - } - ], - "output": { - "type": "object", - "properties": { - "isValid": { - "type": "boolean", - "description": "\"isValid\" will tell you if you have collected all the information needed for the travel rule data transfer. Once this field = \"true\", you can move on to the next step which is to transfer the front-end information to your back-end and perform Travel Rule Transaction create" - }, - "type": { - "type": "string", - "description": "\"type\" will tell you if the virtual asset value converted to FIAT value of the withdrawal request is above (=TRAVELRULE) or below (=BELOW_THRESHOLD) the threshold in your jurisdiction. If it is to an unhosted wallet which does not require travel rule information to be sent and only collected, it will say NON_CUSTODIAL.", - "example": "TRAVELRULE" - }, - "beneficiaryAddressType": { - "type": "string", - "description": "\"beneficiaryAddressType\" will tell you if your blockchain analytics provider or internal address book has been able to identify the wallet address.", - "example": "UNKNOWN" - }, - "addressSource": { - "type": "string", - "description": "\"addressSource\" will tell you if the address was found in your internal address book or identified by the blockchain analytics provider.", - "example": "UNKNOWN" - }, - "beneficiaryVASPdid": { - "type": "string", - "description": "The VASP DID of the beneficiary VASP", - "example": "did:ethr:0x46a7ed5813ce735387df2bfb245bd7722e0de992" - }, - "beneficiaryVASPname": { - "type": "string", - "description": "\"beneficiaryVASPname\" will tell you the name of the VASP that has been identified as the owner of the wallet address. This name is used in a subsequent call to get its DID.", - "example": "Fireblocks" - }, - "warnings": { - "description": "\"errors/warnings\" will tell you what information about the beneficiary you need to collect from the sender.", - "example": [ - "optional-beneficiaryAccountNumber" - ], - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "isValid", - "type", - "beneficiaryAddressType", - "addressSource", - "beneficiaryVASPdid", - "beneficiaryVASPname", - "warnings" - ] - }, - "description": "Validate Full Travel Rule Transaction.\n\nValidate Full Travel Rule transactions.\n\nChecks for all required information on the originator and beneficiary VASPs.\n\n**Note:** The reference content in this section documents the Travel Rule beta endpoint. The beta endpoint includes APIs that are currently in preview and aren't yet generally available.\n\nTo enroll in the beta and enable this endpoint, contact your Fireblocks Customer Success Manager or send an email to [CSM@fireblocks.com](mailto:CSM@fireblocks.com)." - }, - { - "method": "get", - "path": "/screening/travel_rule/vasp/{did}", - "name": "screening_travel_rule_vasp_getByDid", - "parameters": [ - { - "type": "string" - }, - { - "type": "object", - "properties": { - "order": { - "type": "string", - "description": "Field to order by" - }, - "per_page": { - "type": "number", - "description": "Records per page" - }, - "page": { - "type": "number", - "description": "Page number" - }, - "fields": { - "type": "string", - "description": "CSV of fields to return (all, \"blank\" or see list of all field names below)" - } - }, - "required": [] - } - ], - "output": { - "type": "object", - "properties": { - "did": { - "type": "string" - }, - "name": { - "type": "string" - }, - "verificationStatus": { - "type": "string" - }, - "addressLine1": { - "type": "string" - }, - "addressLine2": { - "type": "string" - }, - "city": { - "type": "string" - }, - "country": { - "type": "string" - }, - "emailDomains": { - "type": "string" - }, - "website": { - "type": "string" - }, - "logo": { - "type": "string" - }, - "legalStructure": { - "type": "string" - }, - "legalName": { - "type": "string" - }, - "yearFounded": { - "type": "string" - }, - "incorporationCountry": { - "type": "string" - }, - "isRegulated": { - "type": "string" - }, - "otherNames": { - "type": "string" - }, - "identificationType": { - "type": "string" - }, - "identificationCountry": { - "type": "string" - }, - "businessNumber": { - "type": "string" - }, - "regulatoryAuthorities": { - "type": "string" - }, - "jurisdictions": { - "type": "string" - }, - "street": { - "type": "string" - }, - "number": { - "type": "string" - }, - "unit": { - "type": "string" - }, - "postCode": { - "type": "string" - }, - "state": { - "type": "string" - }, - "certificates": { - "type": "string" - }, - "description": { - "type": "string" - }, - "travelRule_OPENVASP": { - "type": "string" - }, - "travelRule_SYGNA": { - "type": "string" - }, - "travelRule_TRISA": { - "type": "string" - }, - "travelRule_TRLIGHT": { - "type": "string" - }, - "travelRule_EMAIL": { - "type": "string" - }, - "travelRule_TRP": { - "type": "string" - }, - "travelRule_SHYFT": { - "type": "string" - }, - "travelRule_USTRAVELRULEWG": { - "type": "string" - }, - "createdAt": { - "type": "string" - }, - "createdBy": { - "type": "string" - }, - "updatedAt": { - "type": "string" - }, - "updatedBy": { - "type": "string" - }, - "lastSentDate": { - "type": "string" - }, - "lastReceivedDate": { - "type": "string" - }, - "documents": { - "type": "string" - }, - "hasAdmin": { - "type": "boolean" - }, - "isNotifiable": { - "type": "boolean" - }, - "issuers": { - "type": "object", - "properties": { - "yearFounded": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "isRegulated": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "regulatoryAuthorities": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "name": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "logo": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "website": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "legalName": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "legalStructure": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "incorporationCountry": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "businessNumber": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "addressLine1": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "city": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "country": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "description": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - } - }, - "required": [ - "yearFounded", - "isRegulated", - "regulatoryAuthorities", - "name", - "logo", - "website", - "legalName", - "legalStructure", - "incorporationCountry", - "businessNumber", - "addressLine1", - "city", - "country", - "description" - ] - } - }, - "required": [ - "did", - "name", - "verificationStatus", - "addressLine1", - "addressLine2", - "city", - "country", - "emailDomains", - "website", - "logo", - "legalStructure", - "legalName", - "yearFounded", - "incorporationCountry", - "isRegulated", - "otherNames", - "identificationType", - "identificationCountry", - "businessNumber", - "regulatoryAuthorities", - "jurisdictions", - "street", - "number", - "unit", - "postCode", - "state", - "certificates", - "description", - "travelRule_OPENVASP", - "travelRule_SYGNA", - "travelRule_TRISA", - "travelRule_TRLIGHT", - "travelRule_EMAIL", - "travelRule_TRP", - "travelRule_SHYFT", - "travelRule_USTRAVELRULEWG", - "createdAt", - "createdBy", - "updatedAt", - "updatedBy", - "lastSentDate", - "lastReceivedDate", - "documents", - "hasAdmin", - "isNotifiable", - "issuers" - ] - }, - "description": "Get VASP details.\n\nGet VASP Details.\n\nReturns information about a VASP that has the specified DID.\n\n**Note:** The reference content in this section documents the Travel Rule beta endpoint. The beta endpoint includes APIs that are currently in preview and aren't yet generally available.\n\nTo enroll in the beta and enable this endpoint, contact your Fireblocks Customer Success Manager or send an email to [CSM@fireblocks.com](mailto:CSM@fireblocks.com)." - }, - { - "method": "get", - "path": "/screening/travel_rule/vasp", - "name": "screening_travel_rule_vasp_get", - "parameters": [ - { - "type": "object", - "properties": { - "order": { - "type": "string", - "description": "Field to order by" - }, - "per_page": { - "type": "number", - "description": "Records per page" - }, - "page": { - "type": "number", - "description": "Page number" - }, - "fields": { - "type": "string", - "description": "CSV of fields to return (all, \"blank\" or see list of all field names below)" - } - }, - "required": [] - } - ], - "output": { - "type": "object", - "properties": { - "vasps": { - "type": "array", - "items": { - "type": "object", - "properties": { - "did": { - "type": "string" - }, - "name": { - "type": "string" - }, - "verificationStatus": { - "type": "string" - }, - "addressLine1": { - "type": "string" - }, - "addressLine2": { - "type": "string" - }, - "city": { - "type": "string" - }, - "country": { - "type": "string" - }, - "emailDomains": { - "type": "string" - }, - "website": { - "type": "string" - }, - "logo": { - "type": "string" - }, - "legalStructure": { - "type": "string" - }, - "legalName": { - "type": "string" - }, - "yearFounded": { - "type": "string" - }, - "incorporationCountry": { - "type": "string" - }, - "isRegulated": { - "type": "string" - }, - "otherNames": { - "type": "string" - }, - "identificationType": { - "type": "string" - }, - "identificationCountry": { - "type": "string" - }, - "businessNumber": { - "type": "string" - }, - "regulatoryAuthorities": { - "type": "string" - }, - "jurisdictions": { - "type": "string" - }, - "street": { - "type": "string" - }, - "number": { - "type": "string" - }, - "unit": { - "type": "string" - }, - "postCode": { - "type": "string" - }, - "state": { - "type": "string" - }, - "certificates": { - "type": "string" - }, - "description": { - "type": "string" - }, - "travelRule_OPENVASP": { - "type": "string" - }, - "travelRule_SYGNA": { - "type": "string" - }, - "travelRule_TRISA": { - "type": "string" - }, - "travelRule_TRLIGHT": { - "type": "string" - }, - "travelRule_EMAIL": { - "type": "string" - }, - "travelRule_TRP": { - "type": "string" - }, - "travelRule_SHYFT": { - "type": "string" - }, - "travelRule_USTRAVELRULEWG": { - "type": "string" - }, - "createdAt": { - "type": "string" - }, - "createdBy": { - "type": "string" - }, - "updatedAt": { - "type": "string" - }, - "updatedBy": { - "type": "string" - }, - "lastSentDate": { - "type": "string" - }, - "lastReceivedDate": { - "type": "string" - }, - "documents": { - "type": "string" - }, - "hasAdmin": { - "type": "boolean" - }, - "isNotifiable": { - "type": "boolean" - }, - "issuers": { - "type": "object", - "properties": { - "yearFounded": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "isRegulated": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "regulatoryAuthorities": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "name": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "logo": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "website": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "legalName": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "legalStructure": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "incorporationCountry": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "businessNumber": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "addressLine1": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "city": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "country": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - }, - "description": { - "type": "object", - "properties": { - "issuerDid": { - "type": "string" - } - }, - "required": [ - "issuerDid" - ] - } - }, - "required": [ - "yearFounded", - "isRegulated", - "regulatoryAuthorities", - "name", - "logo", - "website", - "legalName", - "legalStructure", - "incorporationCountry", - "businessNumber", - "addressLine1", - "city", - "country", - "description" - ] - } - }, - "required": [ - "did", - "name", - "verificationStatus", - "addressLine1", - "addressLine2", - "city", - "country", - "emailDomains", - "website", - "logo", - "legalStructure", - "legalName", - "yearFounded", - "incorporationCountry", - "isRegulated", - "otherNames", - "identificationType", - "identificationCountry", - "businessNumber", - "regulatoryAuthorities", - "jurisdictions", - "street", - "number", - "unit", - "postCode", - "state", - "certificates", - "description", - "travelRule_OPENVASP", - "travelRule_SYGNA", - "travelRule_TRISA", - "travelRule_TRLIGHT", - "travelRule_EMAIL", - "travelRule_TRP", - "travelRule_SHYFT", - "travelRule_USTRAVELRULEWG", - "createdAt", - "createdBy", - "updatedAt", - "updatedBy", - "lastSentDate", - "lastReceivedDate", - "documents", - "hasAdmin", - "isNotifiable", - "issuers" - ] - } - } - }, - "required": [ - "vasps" - ] - }, - "description": "Get All VASPs.\n\nReturns a list of VASPs. VASPs can be searched and sorted and results are paginated.\n\n**Note:** The reference content in this section documents the Travel Rule beta endpoint. The beta endpoint includes APIs that are currently in preview and aren't yet generally available.\n\nTo enroll in the beta and enable this endpoint, contact your Fireblocks Customer Success Manager or send an email to [CSM@fireblocks.com](mailto:CSM@fireblocks.com)." - }, - { - "method": "put", - "path": "/screeening/travel_rule/vasp/update", - "name": "screeening_travel_rule_vasp_update_put", - "parameters": [ - { - "type": "object", - "properties": { - "did": { - "type": "string", - "example": "did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2", - "description": "The decentralized identifier of the VASP" - }, - "pii_didkey": { - "type": "string", - "example": "did:key:z6Mks5CZRaiooKYhq5TwtXQC1gWhwiZnmiKfFrMnYY62MhYf", - "description": "The PII DID key of the VASP" - } - }, - "required": [ - "did", - "pii_didkey" - ] - } - ], - "output": { - "type": "object", - "properties": { - "did": { - "type": "string", - "example": "did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2", - "description": "The decentralized identifier of the VASP" - }, - "pii_didkey": { - "type": "string", - "example": "did:key:z6Mks5CZRaiooKYhq5TwtXQC1gWhwiZnmiKfFrMnYY62MhYf", - "description": "The PII DID key of the VASP" - } - }, - "required": [ - "did", - "pii_didkey" - ] - }, - "description": "Add jsonDidKey to VASP details.\n\nUpdate VASP Details.\n\nUpdates a VASP with the provided parameters. Use this endpoint to add your public jsonDIDkey generated by Notabene.\n\n**Note:** The reference content in this section documents the Travel Rule beta endpoint. The beta endpoint includes APIs that are currently in preview and aren't yet generally available.\n\nTo enroll in the beta and enable this endpoint, contact your Fireblocks Customer Success Manager or send an email to [CSM@fireblocks.com](mailto:CSM@fireblocks.com)." - }, - { - "method": "get", - "path": "/tap/active_policy", - "name": "tap_active_policy_get", - "parameters": [], - "output": { - "type": "object", - "description": "Policy validation", - "properties": { - "policy": { - "type": "object", - "description": "Response object for policy operations", - "properties": { - "rules": { - "type": "array", - "description": "A set of policy rules", - "items": { - "type": "object", - "description": "Policy rule which is enforced on transactions", - "properties": { - "operator": { - "type": "string", - "description": "(deprecated - replaced by \"operators\") | Defines users who can initiate the type of transaction to which the rule applies. options are * \"*\" - All users are allowed * Specific User id", - "deprecated": true - }, - "operators": { - "type": "object", - "description": "Defines users/groups who can initiate the type of transaction to which the rule applies.", - "properties": { - "wildcard": { - "type": "string", - "enum": [ - "*" - ], - "description": "If used then this property should appear as the only child property\n* \"*\" - All users are allowed\n" - }, - "users": { - "type": "array", - "description": "Set of users ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Set of group ids", - "items": { - "type": "string" - } - }, - "services": { - "type": "array", - "description": "set of services to initiate transactions", - "items": { - "type": "string" - } - } - } - }, - "transactionType": { - "type": "string", - "enum": [ - "TRANSFER", - "CONTRACT_CALL", - "APPROVE", - "MINT", - "BURN", - "SUPPLY", - "REDEEM", - "STAKE", - "RAW", - "TYPED_MESSAGE" - ], - "description": "Defines the type of transaction to which the rule applies.\n * TRANSFER - Default. Transfers funds from one account to another\n * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.\n * APPROVE - Allows a smart contract to withdraw from a designated wallet.\n * MINT - Perform a mint operation (increase supply) on a supported token\n * BURN - Perform a burn operation (reduce supply) on a supported token\n * SUPPLY - Use for DeFi to lend assets\n * REDEEM - Use for DeFi to get lending back\n * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.\n * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.\n * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.\n" - }, - "designatedSigner": { - "type": "string", - "description": "(deprecated - replaced by \"designatedSigners\") Id representing the user who signs transactions that match a specific rule", - "deprecated": true - }, - "designatedSigners": { - "type": "object", - "description": "Set of ids representing the users who signs transactions that match a specific rule", - "properties": { - "users": { - "type": "array", - "description": "Set of users ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Set of group ids", - "items": { - "type": "string" - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "TRANSFER" - ], - "description": "Policy rule type" - }, - "action": { - "type": "string", - "enum": [ - "ALLOW", - "BLOCK", - "2-TIER" - ], - "description": "Defines what occurs when a transaction meets the rule's criteria\n* ALLOW - The transaction goes through and can be signed without requiring additional approvals\n* BLOCK - The transaction is automatically blocked\n* 2-TIER - Only these users or user groups can approve \n If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through\n The list of entities are set is \"authorizationGroups\" field\n" - }, - "asset": { - "type": "string", - "description": "Defines the type of asset being transacted, options are\n* \"*\" - All assets\n* Specific asset\n" - }, - "srcType": { - "description": "(deprecated - replaced by \"src\") source account type" - }, - "srcSubType": { - "description": "(deprecated - replaced by \"src\") source sub account type" - }, - "srcId": { - "description": "(deprecated - replaced by \"src\") source account id" - }, - "src": { - "type": "object", - "description": "Defines source accounts the rule allows transfers to originate from", - "properties": { - "ids": { - "type": "array", - "description": "A set of ids", - "items": { - "type": "array", - "description": "A set of ids in a tuple format", - "items": { - "type": "string" - }, - "minItems": 1, - "maxItems": 3 - } - } - } - }, - "dstType": { - "description": "(deprecated - replaced by \"dst\") destination account type" - }, - "dstSubType": { - "description": "(deprecated - replaced by \"dst\") destination sub account type" - }, - "dstId": { - "description": "(deprecated - replaced by \"dst\") destination account id" - }, - "dst": { - "type": "object", - "description": "Defines the destination accounts the rule allows transfers to", - "properties": { - "ids": { - "type": "array", - "description": "A set of ids", - "items": { - "type": "array", - "description": "A set of ids in a tuple format", - "items": { - "type": "string" - }, - "minItems": 1, - "maxItems": 3 - } - } - } - }, - "dstAddressType": { - "type": "string", - "enum": [ - "WHITELISTED", - "ONE_TIME", - "*" - ], - "description": "Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.\nBy default, you can only transfer to an external address after it’s whitelisted.\n * WHITELISTED - Can only be sent to whitelisted addresses.\n * ONE_TIME - Can only be sent to non-whitelisted external addresses.\n * \"*\" - can be sent to whitelisted addresses or non-whitelisted external\n" - }, - "amountCurrency": { - "type": "string", - "enum": [ - "USD", - "EUR", - "NATIVE" - ], - "description": "* USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.\n* EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.\n* NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.\n" - }, - "amountScope": { - "type": "string", - "enum": [ - "SINGLE_TX", - "TIMEFRAME" - ], - "description": "* SINGLE_TX - limit applies to a single transaction\n* TIMEFRAME - limit applies to all transactions within the defined time period\n" - }, - "amount": { - "type": "number", - "description": "Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)" - }, - "periodSec": { - "type": "number", - "description": "Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.\nWhen the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.\n" - }, - "authorizers": { - "type": "array", - "description": "(deprecated - replaced by \"authorizationGroups\") Allowed entities which can approves a transaction", - "deprecated": true, - "items": { - "type": "string" - } - }, - "authorizersCount": { - "type": "number", - "description": "(deprecated - replaced by \"authorizationGroups\") Min amount of entities which are needed to approve a transaction", - "deprecated": true - }, - "authorizationGroups": { - "type": "object", - "description": "Defines the transaction approval terms", - "properties": { - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ], - "description": "* AND - requires approval of all authorization groups\n* OR - requires approval of at least one of the authorization groups\n" - }, - "allowOperatorAsAuthorizer": { - "type": "boolean", - "description": "Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction" - }, - "groups": { - "type": "array", - "description": "Groups of entities which can approve the transaction", - "items": { - "type": "object", - "properties": { - "users": { - "type": "array", - "description": "User ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Group ids", - "items": { - "type": "string" - } - }, - "th": { - "type": "number", - "description": "Represents the min amount of entities which are required to approve the transaction, default is 1." - } - } - } - } - } - }, - "amountAggregation": { - "type": "object", - "description": "Defines the method by which the Policy Engine calculates accumulation.\nIt uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.\n", - "properties": { - "operators": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - }, - "srcTransferPeers": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - }, - "dstTransferPeers": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - } - } - }, - "rawMessageSigning": { - "type": "object", - "description": "Raw message signing configuration", - "properties": { - "algorithm": { - "type": "string" - }, - "derivationPath": { - "type": "object", - "properties": { - "path": { - "type": "array", - "items": { - "type": "number" - } - } - } - } - } - }, - "applyForApprove": { - "type": "boolean", - "description": "Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)" - }, - "applyForTypedMessage": { - "type": "boolean", - "description": "Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)" - }, - "externalDescriptor": { - "type": "string", - "description": "A unique id identifying the rule" - } - }, - "required": [ - "type", - "action", - "asset", - "amountCurrency", - "amountScope", - "amount", - "periodSec", - "externalDescriptor" - ] - } - }, - "metadata": { - "type": "object", - "description": "Policy related metadata", - "properties": { - "editedBy": { - "type": "string", - "description": "The user id of the user who last edited the policy" - }, - "editedAt": { - "type": "string", - "description": "The timestamp of the last edit of the policy" - }, - "publishedBy": { - "type": "string", - "description": "The user id of the user who last published the policy" - }, - "publishedAt": { - "type": "string", - "description": "The timestamp of the last publish of the policy" - } - } - } - }, - "required": [ - "rules", - "metadata" - ] - }, - "validation": { - "type": "object", - "description": "Policy validation object", - "properties": { - "status": { - "type": "string", - "description": "Validation status" - }, - "checkResult": { - "type": "object", - "description": "Policy rules validation result", - "properties": { - "errors": { - "type": "number", - "description": "Number of errors" - }, - "result": { - "type": "array", - "description": "A set of validation results", - "items": { - "type": "object", - "description": "The rule validation result", - "properties": { - "index": { - "type": "number", - "description": "Rule index number in the policy" - }, - "status": { - "type": "string", - "enum": [ - "ok", - "failure" - ], - "description": "Validation status" - }, - "errors": { - "type": "array", - "description": "A set of rule validation error objects", - "items": { - "type": "object", - "description": "Rule validation result error", - "properties": { - "errorMessage": { - "type": "string", - "description": "Error message" - }, - "errorCode": { - "type": "number", - "description": "error code" - }, - "errorCodeName": { - "type": "string", - "description": "error code name" - }, - "errorField": { - "type": "string", - "enum": [ - "operator", - "operators", - "authorizationGroups", - "designatedSigner", - "designatedSigners", - "contractMethods", - "amountAggregation", - "src", - "dst" - ], - "description": "The field which the error relates to\n* operator - transaction initiator\n* operators - transaction initiators\n* authorizationGroups - transaction authorizer groups\n* designatedSigner - transaction signer\n* designatedSigners - transaction signers\n* contractMethods - contract methods\n* amountAggregation - transaction amount aggregation configuration\n* src - transaction source asset configuration\n* dst - transaction destination asset configuration\n" - } - }, - "required": [ - "errorMessage", - "errorCode", - "errorCodeName", - "errorField" - ] - } - } - }, - "required": [ - "index", - "status", - "errors" - ] - } - } - }, - "required": [ - "errors", - "result" - ] - } - }, - "required": [ - "status", - "checkResult" - ] - } - }, - "required": [ - "policy", - "validation" - ] - }, - "description": "Get the active policy and its validation.\n\nReturns the active policy and its validation.
\n**Note:** These endpoints are currently in beta and might be subject to changes.\nIf you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "get", - "path": "/tap/draft", - "name": "tap_draft_get", - "parameters": [], - "output": { - "type": "object", - "description": "Draft validation", - "properties": { - "draftResponse": { - "type": "object", - "description": "Response object for draft operations", - "properties": { - "status": { - "type": "string", - "description": "Operation status" - }, - "rules": { - "type": "array", - "description": "Draft rules", - "items": { - "type": "object", - "description": "Policy rule which is enforced on transactions", - "properties": { - "operator": { - "type": "string", - "description": "(deprecated - replaced by \"operators\") | Defines users who can initiate the type of transaction to which the rule applies. options are * \"*\" - All users are allowed * Specific User id", - "deprecated": true - }, - "operators": { - "type": "object", - "description": "Defines users/groups who can initiate the type of transaction to which the rule applies.", - "properties": { - "wildcard": { - "type": "string", - "enum": [ - "*" - ], - "description": "If used then this property should appear as the only child property\n* \"*\" - All users are allowed\n" - }, - "users": { - "type": "array", - "description": "Set of users ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Set of group ids", - "items": { - "type": "string" - } - }, - "services": { - "type": "array", - "description": "set of services to initiate transactions", - "items": { - "type": "string" - } - } - } - }, - "transactionType": { - "type": "string", - "enum": [ - "TRANSFER", - "CONTRACT_CALL", - "APPROVE", - "MINT", - "BURN", - "SUPPLY", - "REDEEM", - "STAKE", - "RAW", - "TYPED_MESSAGE" - ], - "description": "Defines the type of transaction to which the rule applies.\n * TRANSFER - Default. Transfers funds from one account to another\n * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.\n * APPROVE - Allows a smart contract to withdraw from a designated wallet.\n * MINT - Perform a mint operation (increase supply) on a supported token\n * BURN - Perform a burn operation (reduce supply) on a supported token\n * SUPPLY - Use for DeFi to lend assets\n * REDEEM - Use for DeFi to get lending back\n * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.\n * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.\n * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.\n" - }, - "designatedSigner": { - "type": "string", - "description": "(deprecated - replaced by \"designatedSigners\") Id representing the user who signs transactions that match a specific rule", - "deprecated": true - }, - "designatedSigners": { - "type": "object", - "description": "Set of ids representing the users who signs transactions that match a specific rule", - "properties": { - "users": { - "type": "array", - "description": "Set of users ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Set of group ids", - "items": { - "type": "string" - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "TRANSFER" - ], - "description": "Policy rule type" - }, - "action": { - "type": "string", - "enum": [ - "ALLOW", - "BLOCK", - "2-TIER" - ], - "description": "Defines what occurs when a transaction meets the rule's criteria\n* ALLOW - The transaction goes through and can be signed without requiring additional approvals\n* BLOCK - The transaction is automatically blocked\n* 2-TIER - Only these users or user groups can approve \n If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through\n The list of entities are set is \"authorizationGroups\" field\n" - }, - "asset": { - "type": "string", - "description": "Defines the type of asset being transacted, options are\n* \"*\" - All assets\n* Specific asset\n" - }, - "srcType": { - "description": "(deprecated - replaced by \"src\") source account type" - }, - "srcSubType": { - "description": "(deprecated - replaced by \"src\") source sub account type" - }, - "srcId": { - "description": "(deprecated - replaced by \"src\") source account id" - }, - "src": { - "type": "object", - "description": "Defines source accounts the rule allows transfers to originate from", - "properties": { - "ids": { - "type": "array", - "description": "A set of ids", - "items": { - "type": "array", - "description": "A set of ids in a tuple format", - "items": { - "type": "string" - }, - "minItems": 1, - "maxItems": 3 - } - } - } - }, - "dstType": { - "description": "(deprecated - replaced by \"dst\") destination account type" - }, - "dstSubType": { - "description": "(deprecated - replaced by \"dst\") destination sub account type" - }, - "dstId": { - "description": "(deprecated - replaced by \"dst\") destination account id" - }, - "dst": { - "type": "object", - "description": "Defines the destination accounts the rule allows transfers to", - "properties": { - "ids": { - "type": "array", - "description": "A set of ids", - "items": { - "type": "array", - "description": "A set of ids in a tuple format", - "items": { - "type": "string" - }, - "minItems": 1, - "maxItems": 3 - } - } - } - }, - "dstAddressType": { - "type": "string", - "enum": [ - "WHITELISTED", - "ONE_TIME", - "*" - ], - "description": "Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.\nBy default, you can only transfer to an external address after it’s whitelisted.\n * WHITELISTED - Can only be sent to whitelisted addresses.\n * ONE_TIME - Can only be sent to non-whitelisted external addresses.\n * \"*\" - can be sent to whitelisted addresses or non-whitelisted external\n" - }, - "amountCurrency": { - "type": "string", - "enum": [ - "USD", - "EUR", - "NATIVE" - ], - "description": "* USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.\n* EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.\n* NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.\n" - }, - "amountScope": { - "type": "string", - "enum": [ - "SINGLE_TX", - "TIMEFRAME" - ], - "description": "* SINGLE_TX - limit applies to a single transaction\n* TIMEFRAME - limit applies to all transactions within the defined time period\n" - }, - "amount": { - "type": "number", - "description": "Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)" - }, - "periodSec": { - "type": "number", - "description": "Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.\nWhen the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.\n" - }, - "authorizers": { - "type": "array", - "description": "(deprecated - replaced by \"authorizationGroups\") Allowed entities which can approves a transaction", - "deprecated": true, - "items": { - "type": "string" - } - }, - "authorizersCount": { - "type": "number", - "description": "(deprecated - replaced by \"authorizationGroups\") Min amount of entities which are needed to approve a transaction", - "deprecated": true - }, - "authorizationGroups": { - "type": "object", - "description": "Defines the transaction approval terms", - "properties": { - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ], - "description": "* AND - requires approval of all authorization groups\n* OR - requires approval of at least one of the authorization groups\n" - }, - "allowOperatorAsAuthorizer": { - "type": "boolean", - "description": "Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction" - }, - "groups": { - "type": "array", - "description": "Groups of entities which can approve the transaction", - "items": { - "type": "object", - "properties": { - "users": { - "type": "array", - "description": "User ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Group ids", - "items": { - "type": "string" - } - }, - "th": { - "type": "number", - "description": "Represents the min amount of entities which are required to approve the transaction, default is 1." - } - } - } - } - } - }, - "amountAggregation": { - "type": "object", - "description": "Defines the method by which the Policy Engine calculates accumulation.\nIt uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.\n", - "properties": { - "operators": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - }, - "srcTransferPeers": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - }, - "dstTransferPeers": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - } - } - }, - "rawMessageSigning": { - "type": "object", - "description": "Raw message signing configuration", - "properties": { - "algorithm": { - "type": "string" - }, - "derivationPath": { - "type": "object", - "properties": { - "path": { - "type": "array", - "items": { - "type": "number" - } - } - } - } - } - }, - "applyForApprove": { - "type": "boolean", - "description": "Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)" - }, - "applyForTypedMessage": { - "type": "boolean", - "description": "Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)" - }, - "externalDescriptor": { - "type": "string", - "description": "A unique id identifying the rule" - } - }, - "required": [ - "type", - "action", - "asset", - "amountCurrency", - "amountScope", - "amount", - "periodSec", - "externalDescriptor" - ] - } - }, - "draftId": { - "type": "string", - "description": "Draft unique id" - }, - "metadata": { - "type": "object", - "description": "Policy related metadata", - "properties": { - "editedBy": { - "type": "string", - "description": "The user id of the user who last edited the policy" - }, - "editedAt": { - "type": "string", - "description": "The timestamp of the last edit of the policy" - }, - "publishedBy": { - "type": "string", - "description": "The user id of the user who last published the policy" - }, - "publishedAt": { - "type": "string", - "description": "The timestamp of the last publish of the policy" - } - } - } - }, - "required": [ - "draftId", - "status", - "rules", - "metadata" - ] - }, - "validation": { - "type": "object", - "description": "Policy validation object", - "properties": { - "status": { - "type": "string", - "description": "Validation status" - }, - "checkResult": { - "type": "object", - "description": "Policy rules validation result", - "properties": { - "errors": { - "type": "number", - "description": "Number of errors" - }, - "result": { - "type": "array", - "description": "A set of validation results", - "items": { - "type": "object", - "description": "The rule validation result", - "properties": { - "index": { - "type": "number", - "description": "Rule index number in the policy" - }, - "status": { - "type": "string", - "enum": [ - "ok", - "failure" - ], - "description": "Validation status" - }, - "errors": { - "type": "array", - "description": "A set of rule validation error objects", - "items": { - "type": "object", - "description": "Rule validation result error", - "properties": { - "errorMessage": { - "type": "string", - "description": "Error message" - }, - "errorCode": { - "type": "number", - "description": "error code" - }, - "errorCodeName": { - "type": "string", - "description": "error code name" - }, - "errorField": { - "type": "string", - "enum": [ - "operator", - "operators", - "authorizationGroups", - "designatedSigner", - "designatedSigners", - "contractMethods", - "amountAggregation", - "src", - "dst" - ], - "description": "The field which the error relates to\n* operator - transaction initiator\n* operators - transaction initiators\n* authorizationGroups - transaction authorizer groups\n* designatedSigner - transaction signer\n* designatedSigners - transaction signers\n* contractMethods - contract methods\n* amountAggregation - transaction amount aggregation configuration\n* src - transaction source asset configuration\n* dst - transaction destination asset configuration\n" - } - }, - "required": [ - "errorMessage", - "errorCode", - "errorCodeName", - "errorField" - ] - } - } - }, - "required": [ - "index", - "status", - "errors" - ] - } - } - }, - "required": [ - "errors", - "result" - ] - } - }, - "required": [ - "status", - "checkResult" - ] - } - }, - "required": [ - "draftResponse", - "validation" - ] - }, - "description": "Get the active draft.\n\nReturns the active draft and its validation.
\n**Note:** These endpoints are currently in beta and might be subject to changes.\nIf you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "post", - "path": "/tap/draft", - "name": "tap_draft_post", - "parameters": [ - {} - ], - "output": { - "type": "object", - "description": "Response object of the publish policy operation", - "properties": { - "status": { - "type": "string", - "enum": [ - "SUCCESS", - "UNVALIDATED", - "INVALID_CONFIGURATION", - "PENDING", - "PENDING_CONSOLE_APPROVAL", - "AWAITING_QUORUM", - "UNHANDLED_ERROR" - ], - "description": "* SUCCESS - success\n* UNVALIDATED - not validated yet\n* INVALID_CONFIGURATION - at least one rule is invalid\n* PENDING - pending approval\n* PENDING_CONSOLE_APPROVAL - pending approval from the console app\n* AWAITING_QUORUM - pending quorum approval\n* UNHANDLED_ERROR - unhandled error\n" - }, - "rules": { - "type": "array", - "items": { - "type": "object", - "description": "Policy rule which is enforced on transactions", - "properties": { - "operator": { - "type": "string", - "description": "(deprecated - replaced by \"operators\") | Defines users who can initiate the type of transaction to which the rule applies. options are * \"*\" - All users are allowed * Specific User id", - "deprecated": true - }, - "operators": { - "type": "object", - "description": "Defines users/groups who can initiate the type of transaction to which the rule applies.", - "properties": { - "wildcard": { - "type": "string", - "enum": [ - "*" - ], - "description": "If used then this property should appear as the only child property\n* \"*\" - All users are allowed\n" - }, - "users": { - "type": "array", - "description": "Set of users ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Set of group ids", - "items": { - "type": "string" - } - }, - "services": { - "type": "array", - "description": "set of services to initiate transactions", - "items": { - "type": "string" - } - } - } - }, - "transactionType": { - "type": "string", - "enum": [ - "TRANSFER", - "CONTRACT_CALL", - "APPROVE", - "MINT", - "BURN", - "SUPPLY", - "REDEEM", - "STAKE", - "RAW", - "TYPED_MESSAGE" - ], - "description": "Defines the type of transaction to which the rule applies.\n * TRANSFER - Default. Transfers funds from one account to another\n * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.\n * APPROVE - Allows a smart contract to withdraw from a designated wallet.\n * MINT - Perform a mint operation (increase supply) on a supported token\n * BURN - Perform a burn operation (reduce supply) on a supported token\n * SUPPLY - Use for DeFi to lend assets\n * REDEEM - Use for DeFi to get lending back\n * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.\n * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.\n * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.\n" - }, - "designatedSigner": { - "type": "string", - "description": "(deprecated - replaced by \"designatedSigners\") Id representing the user who signs transactions that match a specific rule", - "deprecated": true - }, - "designatedSigners": { - "type": "object", - "description": "Set of ids representing the users who signs transactions that match a specific rule", - "properties": { - "users": { - "type": "array", - "description": "Set of users ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Set of group ids", - "items": { - "type": "string" - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "TRANSFER" - ], - "description": "Policy rule type" - }, - "action": { - "type": "string", - "enum": [ - "ALLOW", - "BLOCK", - "2-TIER" - ], - "description": "Defines what occurs when a transaction meets the rule's criteria\n* ALLOW - The transaction goes through and can be signed without requiring additional approvals\n* BLOCK - The transaction is automatically blocked\n* 2-TIER - Only these users or user groups can approve \n If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through\n The list of entities are set is \"authorizationGroups\" field\n" - }, - "asset": { - "type": "string", - "description": "Defines the type of asset being transacted, options are\n* \"*\" - All assets\n* Specific asset\n" - }, - "srcType": { - "description": "(deprecated - replaced by \"src\") source account type" - }, - "srcSubType": { - "description": "(deprecated - replaced by \"src\") source sub account type" - }, - "srcId": { - "description": "(deprecated - replaced by \"src\") source account id" - }, - "src": { - "type": "object", - "description": "Defines source accounts the rule allows transfers to originate from", - "properties": { - "ids": { - "type": "array", - "description": "A set of ids", - "items": { - "type": "array", - "description": "A set of ids in a tuple format", - "items": { - "type": "string" - }, - "minItems": 1, - "maxItems": 3 - } - } - } - }, - "dstType": { - "description": "(deprecated - replaced by \"dst\") destination account type" - }, - "dstSubType": { - "description": "(deprecated - replaced by \"dst\") destination sub account type" - }, - "dstId": { - "description": "(deprecated - replaced by \"dst\") destination account id" - }, - "dst": { - "type": "object", - "description": "Defines the destination accounts the rule allows transfers to", - "properties": { - "ids": { - "type": "array", - "description": "A set of ids", - "items": { - "type": "array", - "description": "A set of ids in a tuple format", - "items": { - "type": "string" - }, - "minItems": 1, - "maxItems": 3 - } - } - } - }, - "dstAddressType": { - "type": "string", - "enum": [ - "WHITELISTED", - "ONE_TIME", - "*" - ], - "description": "Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.\nBy default, you can only transfer to an external address after it’s whitelisted.\n * WHITELISTED - Can only be sent to whitelisted addresses.\n * ONE_TIME - Can only be sent to non-whitelisted external addresses.\n * \"*\" - can be sent to whitelisted addresses or non-whitelisted external\n" - }, - "amountCurrency": { - "type": "string", - "enum": [ - "USD", - "EUR", - "NATIVE" - ], - "description": "* USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.\n* EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.\n* NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.\n" - }, - "amountScope": { - "type": "string", - "enum": [ - "SINGLE_TX", - "TIMEFRAME" - ], - "description": "* SINGLE_TX - limit applies to a single transaction\n* TIMEFRAME - limit applies to all transactions within the defined time period\n" - }, - "amount": { - "type": "number", - "description": "Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)" - }, - "periodSec": { - "type": "number", - "description": "Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.\nWhen the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.\n" - }, - "authorizers": { - "type": "array", - "description": "(deprecated - replaced by \"authorizationGroups\") Allowed entities which can approves a transaction", - "deprecated": true, - "items": { - "type": "string" - } - }, - "authorizersCount": { - "type": "number", - "description": "(deprecated - replaced by \"authorizationGroups\") Min amount of entities which are needed to approve a transaction", - "deprecated": true - }, - "authorizationGroups": { - "type": "object", - "description": "Defines the transaction approval terms", - "properties": { - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ], - "description": "* AND - requires approval of all authorization groups\n* OR - requires approval of at least one of the authorization groups\n" - }, - "allowOperatorAsAuthorizer": { - "type": "boolean", - "description": "Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction" - }, - "groups": { - "type": "array", - "description": "Groups of entities which can approve the transaction", - "items": { - "type": "object", - "properties": { - "users": { - "type": "array", - "description": "User ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Group ids", - "items": { - "type": "string" - } - }, - "th": { - "type": "number", - "description": "Represents the min amount of entities which are required to approve the transaction, default is 1." - } - } - } - } - } - }, - "amountAggregation": { - "type": "object", - "description": "Defines the method by which the Policy Engine calculates accumulation.\nIt uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.\n", - "properties": { - "operators": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - }, - "srcTransferPeers": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - }, - "dstTransferPeers": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - } - } - }, - "rawMessageSigning": { - "type": "object", - "description": "Raw message signing configuration", - "properties": { - "algorithm": { - "type": "string" - }, - "derivationPath": { - "type": "object", - "properties": { - "path": { - "type": "array", - "items": { - "type": "number" - } - } - } - } - } - }, - "applyForApprove": { - "type": "boolean", - "description": "Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)" - }, - "applyForTypedMessage": { - "type": "boolean", - "description": "Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)" - }, - "externalDescriptor": { - "type": "string", - "description": "A unique id identifying the rule" - } - }, - "required": [ - "type", - "action", - "asset", - "amountCurrency", - "amountScope", - "amount", - "periodSec", - "externalDescriptor" - ] - } - }, - "checkResult": { - "type": "object", - "description": "Policy rules validation result", - "properties": { - "errors": { - "type": "number", - "description": "Number of errors" - }, - "result": { - "type": "array", - "description": "A set of validation results", - "items": { - "type": "object", - "description": "The rule validation result", - "properties": { - "index": { - "type": "number", - "description": "Rule index number in the policy" - }, - "status": { - "type": "string", - "enum": [ - "ok", - "failure" - ], - "description": "Validation status" - }, - "errors": { - "type": "array", - "description": "A set of rule validation error objects", - "items": { - "type": "object", - "description": "Rule validation result error", - "properties": { - "errorMessage": { - "type": "string", - "description": "Error message" - }, - "errorCode": { - "type": "number", - "description": "error code" - }, - "errorCodeName": { - "type": "string", - "description": "error code name" - }, - "errorField": { - "type": "string", - "enum": [ - "operator", - "operators", - "authorizationGroups", - "designatedSigner", - "designatedSigners", - "contractMethods", - "amountAggregation", - "src", - "dst" - ], - "description": "The field which the error relates to\n* operator - transaction initiator\n* operators - transaction initiators\n* authorizationGroups - transaction authorizer groups\n* designatedSigner - transaction signer\n* designatedSigners - transaction signers\n* contractMethods - contract methods\n* amountAggregation - transaction amount aggregation configuration\n* src - transaction source asset configuration\n* dst - transaction destination asset configuration\n" - } - }, - "required": [ - "errorMessage", - "errorCode", - "errorCodeName", - "errorField" - ] - } - } - }, - "required": [ - "index", - "status", - "errors" - ] - } - } - }, - "required": [ - "errors", - "result" - ] - }, - "metadata": { - "type": "object", - "description": "Policy related metadata", - "properties": { - "editedBy": { - "type": "string", - "description": "The user id of the user who last edited the policy" - }, - "editedAt": { - "type": "string", - "description": "The timestamp of the last edit of the policy" - }, - "publishedBy": { - "type": "string", - "description": "The user id of the user who last published the policy" - }, - "publishedAt": { - "type": "string", - "description": "The timestamp of the last publish of the policy" - } - } - } - }, - "required": [ - "status", - "rules", - "checkResult", - "metadata" - ] - }, - "description": "Send publish request for a certain draft id.\n\nSend publish request of certain draft id and returns the response.
\n**Note:** These endpoints are currently in beta and might be subject to changes.\nIf you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "put", - "path": "/tap/draft", - "name": "tap_draft_put", - "parameters": [ - {} - ], - "output": { - "type": "object", - "description": "Draft validation", - "properties": { - "draftResponse": { - "type": "object", - "description": "Response object for draft operations", - "properties": { - "status": { - "type": "string", - "description": "Operation status" - }, - "rules": { - "type": "array", - "description": "Draft rules", - "items": { - "type": "object", - "description": "Policy rule which is enforced on transactions", - "properties": { - "operator": { - "type": "string", - "description": "(deprecated - replaced by \"operators\") | Defines users who can initiate the type of transaction to which the rule applies. options are * \"*\" - All users are allowed * Specific User id", - "deprecated": true - }, - "operators": { - "type": "object", - "description": "Defines users/groups who can initiate the type of transaction to which the rule applies.", - "properties": { - "wildcard": { - "type": "string", - "enum": [ - "*" - ], - "description": "If used then this property should appear as the only child property\n* \"*\" - All users are allowed\n" - }, - "users": { - "type": "array", - "description": "Set of users ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Set of group ids", - "items": { - "type": "string" - } - }, - "services": { - "type": "array", - "description": "set of services to initiate transactions", - "items": { - "type": "string" - } - } - } - }, - "transactionType": { - "type": "string", - "enum": [ - "TRANSFER", - "CONTRACT_CALL", - "APPROVE", - "MINT", - "BURN", - "SUPPLY", - "REDEEM", - "STAKE", - "RAW", - "TYPED_MESSAGE" - ], - "description": "Defines the type of transaction to which the rule applies.\n * TRANSFER - Default. Transfers funds from one account to another\n * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.\n * APPROVE - Allows a smart contract to withdraw from a designated wallet.\n * MINT - Perform a mint operation (increase supply) on a supported token\n * BURN - Perform a burn operation (reduce supply) on a supported token\n * SUPPLY - Use for DeFi to lend assets\n * REDEEM - Use for DeFi to get lending back\n * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.\n * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.\n * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.\n" - }, - "designatedSigner": { - "type": "string", - "description": "(deprecated - replaced by \"designatedSigners\") Id representing the user who signs transactions that match a specific rule", - "deprecated": true - }, - "designatedSigners": { - "type": "object", - "description": "Set of ids representing the users who signs transactions that match a specific rule", - "properties": { - "users": { - "type": "array", - "description": "Set of users ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Set of group ids", - "items": { - "type": "string" - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "TRANSFER" - ], - "description": "Policy rule type" - }, - "action": { - "type": "string", - "enum": [ - "ALLOW", - "BLOCK", - "2-TIER" - ], - "description": "Defines what occurs when a transaction meets the rule's criteria\n* ALLOW - The transaction goes through and can be signed without requiring additional approvals\n* BLOCK - The transaction is automatically blocked\n* 2-TIER - Only these users or user groups can approve \n If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through\n The list of entities are set is \"authorizationGroups\" field\n" - }, - "asset": { - "type": "string", - "description": "Defines the type of asset being transacted, options are\n* \"*\" - All assets\n* Specific asset\n" - }, - "srcType": { - "description": "(deprecated - replaced by \"src\") source account type" - }, - "srcSubType": { - "description": "(deprecated - replaced by \"src\") source sub account type" - }, - "srcId": { - "description": "(deprecated - replaced by \"src\") source account id" - }, - "src": { - "type": "object", - "description": "Defines source accounts the rule allows transfers to originate from", - "properties": { - "ids": { - "type": "array", - "description": "A set of ids", - "items": { - "type": "array", - "description": "A set of ids in a tuple format", - "items": { - "type": "string" - }, - "minItems": 1, - "maxItems": 3 - } - } - } - }, - "dstType": { - "description": "(deprecated - replaced by \"dst\") destination account type" - }, - "dstSubType": { - "description": "(deprecated - replaced by \"dst\") destination sub account type" - }, - "dstId": { - "description": "(deprecated - replaced by \"dst\") destination account id" - }, - "dst": { - "type": "object", - "description": "Defines the destination accounts the rule allows transfers to", - "properties": { - "ids": { - "type": "array", - "description": "A set of ids", - "items": { - "type": "array", - "description": "A set of ids in a tuple format", - "items": { - "type": "string" - }, - "minItems": 1, - "maxItems": 3 - } - } - } - }, - "dstAddressType": { - "type": "string", - "enum": [ - "WHITELISTED", - "ONE_TIME", - "*" - ], - "description": "Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.\nBy default, you can only transfer to an external address after it’s whitelisted.\n * WHITELISTED - Can only be sent to whitelisted addresses.\n * ONE_TIME - Can only be sent to non-whitelisted external addresses.\n * \"*\" - can be sent to whitelisted addresses or non-whitelisted external\n" - }, - "amountCurrency": { - "type": "string", - "enum": [ - "USD", - "EUR", - "NATIVE" - ], - "description": "* USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.\n* EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.\n* NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.\n" - }, - "amountScope": { - "type": "string", - "enum": [ - "SINGLE_TX", - "TIMEFRAME" - ], - "description": "* SINGLE_TX - limit applies to a single transaction\n* TIMEFRAME - limit applies to all transactions within the defined time period\n" - }, - "amount": { - "type": "number", - "description": "Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)" - }, - "periodSec": { - "type": "number", - "description": "Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.\nWhen the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.\n" - }, - "authorizers": { - "type": "array", - "description": "(deprecated - replaced by \"authorizationGroups\") Allowed entities which can approves a transaction", - "deprecated": true, - "items": { - "type": "string" - } - }, - "authorizersCount": { - "type": "number", - "description": "(deprecated - replaced by \"authorizationGroups\") Min amount of entities which are needed to approve a transaction", - "deprecated": true - }, - "authorizationGroups": { - "type": "object", - "description": "Defines the transaction approval terms", - "properties": { - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ], - "description": "* AND - requires approval of all authorization groups\n* OR - requires approval of at least one of the authorization groups\n" - }, - "allowOperatorAsAuthorizer": { - "type": "boolean", - "description": "Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction" - }, - "groups": { - "type": "array", - "description": "Groups of entities which can approve the transaction", - "items": { - "type": "object", - "properties": { - "users": { - "type": "array", - "description": "User ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Group ids", - "items": { - "type": "string" - } - }, - "th": { - "type": "number", - "description": "Represents the min amount of entities which are required to approve the transaction, default is 1." - } - } - } - } - } - }, - "amountAggregation": { - "type": "object", - "description": "Defines the method by which the Policy Engine calculates accumulation.\nIt uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.\n", - "properties": { - "operators": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - }, - "srcTransferPeers": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - }, - "dstTransferPeers": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - } - } - }, - "rawMessageSigning": { - "type": "object", - "description": "Raw message signing configuration", - "properties": { - "algorithm": { - "type": "string" - }, - "derivationPath": { - "type": "object", - "properties": { - "path": { - "type": "array", - "items": { - "type": "number" - } - } - } - } - } - }, - "applyForApprove": { - "type": "boolean", - "description": "Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)" - }, - "applyForTypedMessage": { - "type": "boolean", - "description": "Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)" - }, - "externalDescriptor": { - "type": "string", - "description": "A unique id identifying the rule" - } - }, - "required": [ - "type", - "action", - "asset", - "amountCurrency", - "amountScope", - "amount", - "periodSec", - "externalDescriptor" - ] - } - }, - "draftId": { - "type": "string", - "description": "Draft unique id" - }, - "metadata": { - "type": "object", - "description": "Policy related metadata", - "properties": { - "editedBy": { - "type": "string", - "description": "The user id of the user who last edited the policy" - }, - "editedAt": { - "type": "string", - "description": "The timestamp of the last edit of the policy" - }, - "publishedBy": { - "type": "string", - "description": "The user id of the user who last published the policy" - }, - "publishedAt": { - "type": "string", - "description": "The timestamp of the last publish of the policy" - } - } - } - }, - "required": [ - "draftId", - "status", - "rules", - "metadata" - ] - }, - "validation": { - "type": "object", - "description": "Policy validation object", - "properties": { - "status": { - "type": "string", - "description": "Validation status" - }, - "checkResult": { - "type": "object", - "description": "Policy rules validation result", - "properties": { - "errors": { - "type": "number", - "description": "Number of errors" - }, - "result": { - "type": "array", - "description": "A set of validation results", - "items": { - "type": "object", - "description": "The rule validation result", - "properties": { - "index": { - "type": "number", - "description": "Rule index number in the policy" - }, - "status": { - "type": "string", - "enum": [ - "ok", - "failure" - ], - "description": "Validation status" - }, - "errors": { - "type": "array", - "description": "A set of rule validation error objects", - "items": { - "type": "object", - "description": "Rule validation result error", - "properties": { - "errorMessage": { - "type": "string", - "description": "Error message" - }, - "errorCode": { - "type": "number", - "description": "error code" - }, - "errorCodeName": { - "type": "string", - "description": "error code name" - }, - "errorField": { - "type": "string", - "enum": [ - "operator", - "operators", - "authorizationGroups", - "designatedSigner", - "designatedSigners", - "contractMethods", - "amountAggregation", - "src", - "dst" - ], - "description": "The field which the error relates to\n* operator - transaction initiator\n* operators - transaction initiators\n* authorizationGroups - transaction authorizer groups\n* designatedSigner - transaction signer\n* designatedSigners - transaction signers\n* contractMethods - contract methods\n* amountAggregation - transaction amount aggregation configuration\n* src - transaction source asset configuration\n* dst - transaction destination asset configuration\n" - } - }, - "required": [ - "errorMessage", - "errorCode", - "errorCodeName", - "errorField" - ] - } - } - }, - "required": [ - "index", - "status", - "errors" - ] - } - } - }, - "required": [ - "errors", - "result" - ] - } - }, - "required": [ - "status", - "checkResult" - ] - } - }, - "required": [ - "draftResponse", - "validation" - ] - }, - "description": "Update the draft with a new set of rules.\n\nUpdate the draft and return its validation.
\n**Note:** These endpoints are currently in beta and might be subject to changes.\nIf you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - }, - { - "method": "post", - "path": "/tap/publish", - "name": "tap_publish_post", - "parameters": [ - {} - ], - "output": { - "type": "object", - "description": "Response object of the publish policy operation", - "properties": { - "status": { - "type": "string", - "enum": [ - "SUCCESS", - "UNVALIDATED", - "INVALID_CONFIGURATION", - "PENDING", - "PENDING_CONSOLE_APPROVAL", - "AWAITING_QUORUM", - "UNHANDLED_ERROR" - ], - "description": "* SUCCESS - success\n* UNVALIDATED - not validated yet\n* INVALID_CONFIGURATION - at least one rule is invalid\n* PENDING - pending approval\n* PENDING_CONSOLE_APPROVAL - pending approval from the console app\n* AWAITING_QUORUM - pending quorum approval\n* UNHANDLED_ERROR - unhandled error\n" - }, - "rules": { - "type": "array", - "items": { - "type": "object", - "description": "Policy rule which is enforced on transactions", - "properties": { - "operator": { - "type": "string", - "description": "(deprecated - replaced by \"operators\") | Defines users who can initiate the type of transaction to which the rule applies. options are * \"*\" - All users are allowed * Specific User id", - "deprecated": true - }, - "operators": { - "type": "object", - "description": "Defines users/groups who can initiate the type of transaction to which the rule applies.", - "properties": { - "wildcard": { - "type": "string", - "enum": [ - "*" - ], - "description": "If used then this property should appear as the only child property\n* \"*\" - All users are allowed\n" - }, - "users": { - "type": "array", - "description": "Set of users ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Set of group ids", - "items": { - "type": "string" - } - }, - "services": { - "type": "array", - "description": "set of services to initiate transactions", - "items": { - "type": "string" - } - } - } - }, - "transactionType": { - "type": "string", - "enum": [ - "TRANSFER", - "CONTRACT_CALL", - "APPROVE", - "MINT", - "BURN", - "SUPPLY", - "REDEEM", - "STAKE", - "RAW", - "TYPED_MESSAGE" - ], - "description": "Defines the type of transaction to which the rule applies.\n * TRANSFER - Default. Transfers funds from one account to another\n * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.\n * APPROVE - Allows a smart contract to withdraw from a designated wallet.\n * MINT - Perform a mint operation (increase supply) on a supported token\n * BURN - Perform a burn operation (reduce supply) on a supported token\n * SUPPLY - Use for DeFi to lend assets\n * REDEEM - Use for DeFi to get lending back\n * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.\n * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.\n * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.\n" - }, - "designatedSigner": { - "type": "string", - "description": "(deprecated - replaced by \"designatedSigners\") Id representing the user who signs transactions that match a specific rule", - "deprecated": true - }, - "designatedSigners": { - "type": "object", - "description": "Set of ids representing the users who signs transactions that match a specific rule", - "properties": { - "users": { - "type": "array", - "description": "Set of users ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Set of group ids", - "items": { - "type": "string" - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "TRANSFER" - ], - "description": "Policy rule type" - }, - "action": { - "type": "string", - "enum": [ - "ALLOW", - "BLOCK", - "2-TIER" - ], - "description": "Defines what occurs when a transaction meets the rule's criteria\n* ALLOW - The transaction goes through and can be signed without requiring additional approvals\n* BLOCK - The transaction is automatically blocked\n* 2-TIER - Only these users or user groups can approve \n If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through\n The list of entities are set is \"authorizationGroups\" field\n" - }, - "asset": { - "type": "string", - "description": "Defines the type of asset being transacted, options are\n* \"*\" - All assets\n* Specific asset\n" - }, - "srcType": { - "description": "(deprecated - replaced by \"src\") source account type" - }, - "srcSubType": { - "description": "(deprecated - replaced by \"src\") source sub account type" - }, - "srcId": { - "description": "(deprecated - replaced by \"src\") source account id" - }, - "src": { - "type": "object", - "description": "Defines source accounts the rule allows transfers to originate from", - "properties": { - "ids": { - "type": "array", - "description": "A set of ids", - "items": { - "type": "array", - "description": "A set of ids in a tuple format", - "items": { - "type": "string" - }, - "minItems": 1, - "maxItems": 3 - } - } - } - }, - "dstType": { - "description": "(deprecated - replaced by \"dst\") destination account type" - }, - "dstSubType": { - "description": "(deprecated - replaced by \"dst\") destination sub account type" - }, - "dstId": { - "description": "(deprecated - replaced by \"dst\") destination account id" - }, - "dst": { - "type": "object", - "description": "Defines the destination accounts the rule allows transfers to", - "properties": { - "ids": { - "type": "array", - "description": "A set of ids", - "items": { - "type": "array", - "description": "A set of ids in a tuple format", - "items": { - "type": "string" - }, - "minItems": 1, - "maxItems": 3 - } - } - } - }, - "dstAddressType": { - "type": "string", - "enum": [ - "WHITELISTED", - "ONE_TIME", - "*" - ], - "description": "Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.\nBy default, you can only transfer to an external address after it’s whitelisted.\n * WHITELISTED - Can only be sent to whitelisted addresses.\n * ONE_TIME - Can only be sent to non-whitelisted external addresses.\n * \"*\" - can be sent to whitelisted addresses or non-whitelisted external\n" - }, - "amountCurrency": { - "type": "string", - "enum": [ - "USD", - "EUR", - "NATIVE" - ], - "description": "* USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.\n* EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.\n* NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.\n" - }, - "amountScope": { - "type": "string", - "enum": [ - "SINGLE_TX", - "TIMEFRAME" - ], - "description": "* SINGLE_TX - limit applies to a single transaction\n* TIMEFRAME - limit applies to all transactions within the defined time period\n" - }, - "amount": { - "type": "number", - "description": "Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)" - }, - "periodSec": { - "type": "number", - "description": "Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.\nWhen the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.\n" - }, - "authorizers": { - "type": "array", - "description": "(deprecated - replaced by \"authorizationGroups\") Allowed entities which can approves a transaction", - "deprecated": true, - "items": { - "type": "string" - } - }, - "authorizersCount": { - "type": "number", - "description": "(deprecated - replaced by \"authorizationGroups\") Min amount of entities which are needed to approve a transaction", - "deprecated": true - }, - "authorizationGroups": { - "type": "object", - "description": "Defines the transaction approval terms", - "properties": { - "logic": { - "type": "string", - "enum": [ - "AND", - "OR" - ], - "description": "* AND - requires approval of all authorization groups\n* OR - requires approval of at least one of the authorization groups\n" - }, - "allowOperatorAsAuthorizer": { - "type": "boolean", - "description": "Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction" - }, - "groups": { - "type": "array", - "description": "Groups of entities which can approve the transaction", - "items": { - "type": "object", - "properties": { - "users": { - "type": "array", - "description": "User ids", - "items": { - "type": "string" - } - }, - "usersGroups": { - "type": "array", - "description": "Group ids", - "items": { - "type": "string" - } - }, - "th": { - "type": "number", - "description": "Represents the min amount of entities which are required to approve the transaction, default is 1." - } - } - } - } - } - }, - "amountAggregation": { - "type": "object", - "description": "Defines the method by which the Policy Engine calculates accumulation.\nIt uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.\n", - "properties": { - "operators": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - }, - "srcTransferPeers": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - }, - "dstTransferPeers": { - "type": "string", - "enum": [ - "PER_SINGLE_MATCH", - "ACROSS_ALL_MATCHES" - ], - "description": "* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n" - } - } - }, - "rawMessageSigning": { - "type": "object", - "description": "Raw message signing configuration", - "properties": { - "algorithm": { - "type": "string" - }, - "derivationPath": { - "type": "object", - "properties": { - "path": { - "type": "array", - "items": { - "type": "number" - } - } - } - } - } - }, - "applyForApprove": { - "type": "boolean", - "description": "Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)" - }, - "applyForTypedMessage": { - "type": "boolean", - "description": "Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)" - }, - "externalDescriptor": { - "type": "string", - "description": "A unique id identifying the rule" - } - }, - "required": [ - "type", - "action", - "asset", - "amountCurrency", - "amountScope", - "amount", - "periodSec", - "externalDescriptor" - ] - } - }, - "checkResult": { - "type": "object", - "description": "Policy rules validation result", - "properties": { - "errors": { - "type": "number", - "description": "Number of errors" - }, - "result": { - "type": "array", - "description": "A set of validation results", - "items": { - "type": "object", - "description": "The rule validation result", - "properties": { - "index": { - "type": "number", - "description": "Rule index number in the policy" - }, - "status": { - "type": "string", - "enum": [ - "ok", - "failure" - ], - "description": "Validation status" - }, - "errors": { - "type": "array", - "description": "A set of rule validation error objects", - "items": { - "type": "object", - "description": "Rule validation result error", - "properties": { - "errorMessage": { - "type": "string", - "description": "Error message" - }, - "errorCode": { - "type": "number", - "description": "error code" - }, - "errorCodeName": { - "type": "string", - "description": "error code name" - }, - "errorField": { - "type": "string", - "enum": [ - "operator", - "operators", - "authorizationGroups", - "designatedSigner", - "designatedSigners", - "contractMethods", - "amountAggregation", - "src", - "dst" - ], - "description": "The field which the error relates to\n* operator - transaction initiator\n* operators - transaction initiators\n* authorizationGroups - transaction authorizer groups\n* designatedSigner - transaction signer\n* designatedSigners - transaction signers\n* contractMethods - contract methods\n* amountAggregation - transaction amount aggregation configuration\n* src - transaction source asset configuration\n* dst - transaction destination asset configuration\n" - } - }, - "required": [ - "errorMessage", - "errorCode", - "errorCodeName", - "errorField" - ] - } - } - }, - "required": [ - "index", - "status", - "errors" - ] - } - } - }, - "required": [ - "errors", - "result" - ] - }, - "metadata": { - "type": "object", - "description": "Policy related metadata", - "properties": { - "editedBy": { - "type": "string", - "description": "The user id of the user who last edited the policy" - }, - "editedAt": { - "type": "string", - "description": "The timestamp of the last edit of the policy" - }, - "publishedBy": { - "type": "string", - "description": "The user id of the user who last published the policy" - }, - "publishedAt": { - "type": "string", - "description": "The timestamp of the last publish of the policy" - } - } - } - }, - "required": [ - "status", - "rules", - "checkResult", - "metadata" - ] - }, - "description": "Send publish request for a set of policy rules.\n\nSend publish request of set of policy rules and returns the response.
\n**Note:** These endpoints are currently in beta and might be subject to changes.\nIf you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - } - ], - "errors": [ - { - "method": "post", - "path": "/off_exchange/settlements/trader", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/off_exchange/settlements/transactions", - "messages": [ - "Failed to escape $ref" - ] - } - ], - "options": { - "keyword": false, - "separate": null - } -} \ No newline at end of file +{"openapi":"3.0.3","functions":[{"method":"get","path":"/vault/accounts","name":"vault_accounts_get","parameters":[{"type":"object","properties":{"namePrefix":{"type":"string"},"nameSuffix":{"type":"string"},"minAmountThreshold":{"type":"number"},"assetId":{"type":"string","x-fb-entity":"asset"}},"required":[]}],"output":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"total":{"description":"The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.","type":"string"},"balance":{"deprecated":true,"description":"Deprecated - replaced by \"total\"","type":"string"},"available":{"description":"Funds available for transfer. Equals the blockchain balance minus any locked amounts","type":"string"},"pending":{"description":"The cumulative balance of all transactions pending to be cleared","type":"string"},"frozen":{"description":"The cumulative frozen balance","type":"string"},"lockedAmount":{"description":"Funds in outgoing transactions that are not yet published to the network","type":"string"},"staked":{"description":"Staked balance","type":"string"},"totalStakedCPU":{"type":"number","description":"Deprecated"},"totalStakedNetwork":{"type":"string","description":"Deprecated"},"selfStakedCPU":{"type":"string","description":"Deprecated"},"selfStakedNetwork":{"type":"string","description":"Deprecated"},"pendingRefundCPU":{"type":"string","description":"Deprecated"},"pendingRefundNetwork":{"type":"string","description":"Deprecated"},"blockHeight":{"type":"string"},"blockHash":{"type":"string"},"rewardsInfo":{"type":"object","properties":{"pendingRewards":{"description":"Amount that is pending for rewards","type":"string"}}}}}},"hiddenOnUI":{"type":"boolean"},"customerRefId":{"type":"string"},"autoFuel":{"type":"boolean"}}}},"description":"List vault accounts.\n\nGets all vault accounts in your workspace."},{"method":"post","path":"/vault/accounts","name":"vault_accounts_post","parameters":[{}],"output":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"total":{"description":"The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.","type":"string"},"balance":{"deprecated":true,"description":"Deprecated - replaced by \"total\"","type":"string"},"available":{"description":"Funds available for transfer. Equals the blockchain balance minus any locked amounts","type":"string"},"pending":{"description":"The cumulative balance of all transactions pending to be cleared","type":"string"},"frozen":{"description":"The cumulative frozen balance","type":"string"},"lockedAmount":{"description":"Funds in outgoing transactions that are not yet published to the network","type":"string"},"staked":{"description":"Staked balance","type":"string"},"totalStakedCPU":{"type":"number","description":"Deprecated"},"totalStakedNetwork":{"type":"string","description":"Deprecated"},"selfStakedCPU":{"type":"string","description":"Deprecated"},"selfStakedNetwork":{"type":"string","description":"Deprecated"},"pendingRefundCPU":{"type":"string","description":"Deprecated"},"pendingRefundNetwork":{"type":"string","description":"Deprecated"},"blockHeight":{"type":"string"},"blockHash":{"type":"string"},"rewardsInfo":{"type":"object","properties":{"pendingRewards":{"description":"Amount that is pending for rewards","type":"string"}}}}}},"hiddenOnUI":{"type":"boolean"},"customerRefId":{"type":"string"},"autoFuel":{"type":"boolean"}}},"description":"Create a new vault account.\n\nCreates a new vault account with the requested name."},{"method":"get","path":"/vault/accounts_paged","name":"vault_accounts_paged_get","parameters":[{"type":"object","properties":{"namePrefix":{"type":"string"},"nameSuffix":{"type":"string"},"minAmountThreshold":{"type":"number"},"assetId":{"type":"string","x-fb-entity":"asset"},"before":{"type":"string"},"after":{"type":"string"},"limit":{"type":"number","minimum":1,"maximum":500,"default":200}},"required":[]}],"output":{"type":"object","properties":{"accounts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"total":{"description":"The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.","type":"string"},"balance":{"deprecated":true,"description":"Deprecated - replaced by \"total\"","type":"string"},"available":{"description":"Funds available for transfer. Equals the blockchain balance minus any locked amounts","type":"string"},"pending":{"description":"The cumulative balance of all transactions pending to be cleared","type":"string"},"frozen":{"description":"The cumulative frozen balance","type":"string"},"lockedAmount":{"description":"Funds in outgoing transactions that are not yet published to the network","type":"string"},"staked":{"description":"Staked balance","type":"string"},"totalStakedCPU":{"type":"number","description":"Deprecated"},"totalStakedNetwork":{"type":"string","description":"Deprecated"},"selfStakedCPU":{"type":"string","description":"Deprecated"},"selfStakedNetwork":{"type":"string","description":"Deprecated"},"pendingRefundCPU":{"type":"string","description":"Deprecated"},"pendingRefundNetwork":{"type":"string","description":"Deprecated"},"blockHeight":{"type":"string"},"blockHash":{"type":"string"},"rewardsInfo":{"type":"object","properties":{"pendingRewards":{"description":"Amount that is pending for rewards","type":"string"}}}}}},"hiddenOnUI":{"type":"boolean"},"customerRefId":{"type":"string"},"autoFuel":{"type":"boolean"}}}},"paging":{"type":"object","properties":{"before":{"type":"string"},"after":{"type":"string"}}},"previousUrl":{"type":"string"},"nextUrl":{"type":"string"}}},"description":"List vault acounts (Paginated).\n\nGets all vault accounts in your workspace. This endpoint returns a limited amount of results with a quick response time."},{"method":"get","path":"/vault/accounts/{vaultAccountId}","name":"vault_accounts_getByVaultaccountid","parameters":[{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account to return type: string"}],"output":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"total":{"description":"The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.","type":"string"},"balance":{"deprecated":true,"description":"Deprecated - replaced by \"total\"","type":"string"},"available":{"description":"Funds available for transfer. Equals the blockchain balance minus any locked amounts","type":"string"},"pending":{"description":"The cumulative balance of all transactions pending to be cleared","type":"string"},"frozen":{"description":"The cumulative frozen balance","type":"string"},"lockedAmount":{"description":"Funds in outgoing transactions that are not yet published to the network","type":"string"},"staked":{"description":"Staked balance","type":"string"},"totalStakedCPU":{"type":"number","description":"Deprecated"},"totalStakedNetwork":{"type":"string","description":"Deprecated"},"selfStakedCPU":{"type":"string","description":"Deprecated"},"selfStakedNetwork":{"type":"string","description":"Deprecated"},"pendingRefundCPU":{"type":"string","description":"Deprecated"},"pendingRefundNetwork":{"type":"string","description":"Deprecated"},"blockHeight":{"type":"string"},"blockHash":{"type":"string"},"rewardsInfo":{"type":"object","properties":{"pendingRewards":{"description":"Amount that is pending for rewards","type":"string"}}}}}},"hiddenOnUI":{"type":"boolean"},"customerRefId":{"type":"string"},"autoFuel":{"type":"boolean"}}},"description":"Find a vault account by ID.\n\nReturns the requested vault account."},{"method":"put","path":"/vault/accounts/{vaultAccountId}","name":"vault_accounts_putByVaultaccountid","parameters":[{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account to edit"},{}],"description":"Rename a vault account.\n\nRenames the requested vault account."},{"method":"get","path":"/vault/asset_wallets","name":"vault_asset_wallets_get","parameters":[{"type":"object","properties":{"totalAmountLargerThan":{"type":"number","description":"When specified, only asset wallets with total balance larger than this amount are returned."},"assetId":{"type":"string","x-fb-entity":"asset","description":"When specified, only asset wallets cross vault accounts that have this asset ID are returned."},"before":{"type":"string","description":"Fetches the next paginated response before this element. This element is a cursor and is returned at the response of the previous page."},"after":{"type":"string","description":"Fetches the next paginated response after this element. This element is a cursor and is returned at the response of the previous page."},"limit":{"type":"number","minimum":1,"maximum":1000,"default":200,"description":"The maximum number of asset wallets in a single response. The default is 200 and the maximum is 1000."}},"required":[]}],"output":{"type":"object","properties":{"assetWallets":{"type":"array","items":{"type":"object","properties":{"vaultId":{"description":"ID of the vault account. You can [get the vault account by this ID](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid) to retrieve vault properties such as its name, auto fueling, hidden on UI or customer reference ID.","type":"string"},"assetId":{"description":"ID of the asset. You can get more information about this asset by using the [supported assets API](https://developers.fireblocks.com/reference/get_supported-assets)","type":"string"},"available":{"description":"Available balance, available to use in a transaction.","type":"string"},"total":{"description":"Total balance at the asset wallet, as seen at the blockchain explorers. This includes balance available, and any kind of unavailable balance such as locked, frozen, or others.","type":"string"},"pending":{"description":"Pending balance.","type":"string"},"staked":{"description":"Staked balance.","type":"string"},"frozen":{"description":"Funds frozen due to the anti-money laundering policy at this workspace.","type":"string"},"lockedAmount":{"description":"Locked balance.","type":"string"},"blockHeight":{"description":"The height (number) of the block of the balance. Can by empty.","type":"string"},"blockHash":{"description":"The hash of the block of the balance. Can by empty.","type":"string"},"creationTimestamp":{"description":"Unix timestamp of the time the asset wallet was created.","type":"string"}}}},"paging":{"type":"object","properties":{"before":{"description":"A string representing a cursor. Users can use this with a new request to this API endpoint as the “before” request parameter to fetch the previous page of results.","type":"string"},"after":{"description":"A string representing a cursor. Users can use this with a new request to this API endpoint as the “before” request parameter to fetch the next page of results.","type":"string"}}}}},"description":"List asset wallets (Paginated).\n\nGets all asset wallets at all of the vault accounts in your workspace. An asset wallet is an asset at a vault account. This method allows fast traversal of all account balances.\n**Note:**\n - This API endpoint is in limited availability and available for selected customers. If you would like to get early access to this endpoint, please reach out to [Fireblocks Support](https://support.fireblocks.io/hc/en-us/requests/new?ticket_form_id=36000337220)\n - This API call is subject to [rate limits](https://developers.fireblocks.com/reference/rate-limiting).\n"},{"method":"post","path":"/vault/accounts/{vaultAccountId}/hide","name":"vault_accounts_hide_postByVaultaccountid","parameters":[{"type":"string","minimum":1,"format":"numeric","x-fb-entity":"vault_account","description":"The vault account to hide"}],"description":"Hide a vault account in the console.\n\nHides the requested vault account from the web console view."},{"method":"post","path":"/vault/accounts/{vaultAccountId}/unhide","name":"vault_accounts_unhide_postByVaultaccountid","parameters":[{"type":"string","minimum":1,"format":"numeric","x-fb-entity":"vault_account","description":"The vault account to unhide"}],"description":"Unhide a vault account in the console.\n\nMakes a hidden vault account visible in web console view."},{"method":"post","path":"/vault/accounts/{vaultAccountId}/{assetId}/activate","name":"vault_accounts_activate_postByVaultaccountidAndAssetid","parameters":[{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account to return, or 'default' for the default vault account"},{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"}],"output":{"type":"object","properties":{"id":{"type":"string"},"address":{"type":"string"},"legacyAddress":{"type":"string"},"enterpriseAddress":{"type":"string"},"tag":{"type":"string"},"eosAccountName":{"type":"string"},"status":{"type":"string"},"activationTxId":{"type":"string"}}},"description":"Activate a wallet in a vault account.\n\nInitiates activation for a wallet in a vault account."},{"method":"post","path":"/vault/accounts/{vaultAccountId}/set_customer_ref_id","name":"vault_accounts_set_customer_ref_id_postByVaultaccountid","parameters":[{"type":"string","minimum":1,"format":"numeric","x-fb-entity":"vault_account","description":"The vault account ID"},{}],"description":"Set an AML/KYT customer reference ID for a vault account.\n\nAssigns an AML/KYT customer reference ID for the vault account."},{"method":"post","path":"/vault/accounts/{vaultAccountId}/set_auto_fuel","name":"vault_accounts_set_auto_fuel_postByVaultaccountid","parameters":[{"type":"string","minimum":1,"format":"numeric","x-fb-entity":"vault_account","description":"The vault account ID"},{}],"description":"Turn autofueling on or off.\n\nSets the autofueling property of the vault account to enabled or disabled."},{"method":"get","path":"/vault/accounts/{vaultAccountId}/{assetId}","name":"vault_accounts_getByVaultaccountidAndAssetid","parameters":[{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account to return"},{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"}],"output":{"type":"object","properties":{"id":{"type":"string"},"total":{"description":"The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.","type":"string"},"balance":{"deprecated":true,"description":"Deprecated - replaced by \"total\"","type":"string"},"available":{"description":"Funds available for transfer. Equals the blockchain balance minus any locked amounts","type":"string"},"pending":{"description":"The cumulative balance of all transactions pending to be cleared","type":"string"},"frozen":{"description":"The cumulative frozen balance","type":"string"},"lockedAmount":{"description":"Funds in outgoing transactions that are not yet published to the network","type":"string"},"staked":{"description":"Staked balance","type":"string"},"totalStakedCPU":{"type":"number","description":"Deprecated"},"totalStakedNetwork":{"type":"string","description":"Deprecated"},"selfStakedCPU":{"type":"string","description":"Deprecated"},"selfStakedNetwork":{"type":"string","description":"Deprecated"},"pendingRefundCPU":{"type":"string","description":"Deprecated"},"pendingRefundNetwork":{"type":"string","description":"Deprecated"},"blockHeight":{"type":"string"},"blockHash":{"type":"string"},"rewardsInfo":{"type":"object","properties":{"pendingRewards":{"description":"Amount that is pending for rewards","type":"string"}}}}},"description":"Get the asset balance for a vault account.\n\nReturns a wallet for a specific asset of a vault account."},{"method":"post","path":"/vault/accounts/{vaultAccountId}/{assetId}","name":"vault_accounts_postByVaultaccountidAndAssetid","parameters":[{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account to return, or 'default' for the default vault account"},{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"},{}],"output":{"type":"object","properties":{"id":{"type":"string"},"address":{"type":"string"},"legacyAddress":{"type":"string"},"enterpriseAddress":{"type":"string"},"tag":{"type":"string"},"eosAccountName":{"type":"string"},"status":{"type":"string"},"activationTxId":{"type":"string"}}},"description":"Create a new wallet.\n\nCreates a wallet for a specific asset in a vault account."},{"method":"post","path":"/vault/accounts/{vaultAccountId}/{assetId}/balance","name":"vault_accounts_balance_postByVaultaccountidAndAssetid","parameters":[{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account to return"},{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"},{"type":"object"}],"output":{"type":"object","properties":{"id":{"type":"string"},"total":{"description":"The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.","type":"string"},"balance":{"deprecated":true,"description":"Deprecated - replaced by \"total\"","type":"string"},"available":{"description":"Funds available for transfer. Equals the blockchain balance minus any locked amounts","type":"string"},"pending":{"description":"The cumulative balance of all transactions pending to be cleared","type":"string"},"frozen":{"description":"The cumulative frozen balance","type":"string"},"lockedAmount":{"description":"Funds in outgoing transactions that are not yet published to the network","type":"string"},"staked":{"description":"Staked balance","type":"string"},"totalStakedCPU":{"type":"number","description":"Deprecated"},"totalStakedNetwork":{"type":"string","description":"Deprecated"},"selfStakedCPU":{"type":"string","description":"Deprecated"},"selfStakedNetwork":{"type":"string","description":"Deprecated"},"pendingRefundCPU":{"type":"string","description":"Deprecated"},"pendingRefundNetwork":{"type":"string","description":"Deprecated"},"blockHeight":{"type":"string"},"blockHash":{"type":"string"},"rewardsInfo":{"type":"object","properties":{"pendingRewards":{"description":"Amount that is pending for rewards","type":"string"}}}}},"description":"Refresh asset balance data.\n\nUpdates the balance of a specific asset in a vault account."},{"method":"get","path":"/vault/accounts/{vaultAccountId}/{assetId}/addresses","name":"vault_accounts_addresses_getByVaultaccountidAndAssetid","parameters":[{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account to return"},{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"}],"output":{"type":"array","items":{"type":"object","properties":{"assetId":{"type":"string","x-fb-entity":"asset"},"address":{"type":"string"},"description":{"type":"string"},"tag":{"type":"string"},"type":{"type":"string"},"customerRefId":{"type":"string"},"addressFormat":{"type":"string","enum":["SEGWIT","LEGACY"]},"legacyAddress":{"type":"string"},"enterpriseAddress":{"type":"string"},"bip44AddressIndex":{"type":"integer"},"userDefined":{"type":"boolean"}}}},"description":"Get asset addresses.\n\nLists all addresses for specific asset of vault account."},{"method":"post","path":"/vault/accounts/{vaultAccountId}/{assetId}/addresses","name":"vault_accounts_addresses_postByVaultaccountidAndAssetid","parameters":[{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account to return"},{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"},{}],"output":{"type":"object","properties":{"address":{"type":"string"},"legacyAddress":{"type":"string"},"enterpriseAddress":{"type":"string"},"tag":{"type":"string"},"bip44AddressIndex":{"type":"integer"}}},"description":"Create new asset deposit address.\n\nCreates a new deposit address for an asset of a vault account."},{"method":"get","path":"/vault/accounts/{vaultAccountId}/{assetId}/max_spendable_amount","name":"vault_accounts_max_spendable_amount_getByVaultaccountidAndAssetid","parameters":[{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account, or 'default' for the default vault account"},{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"},{"type":"object","properties":{"manualSignging":{"type":"boolean","description":"False by default. The maximum number of inputs depends if the transaction will be signed by an automated co-signer server or on a mobile device."}},"required":[]}],"description":"Get the maximum spendable amount in a single transaction.\n\nGet the maximum amount of a particular asset that can be spent in a single transaction from a specified vault account (UTXO assets only, with a limitation on number of inputs embedded). Send several transactions if you want to spend more than the maximum spendable amount."},{"method":"put","path":"/vault/accounts/{vaultAccountId}/{assetId}/addresses/{addressId}","name":"vault_accounts_addresses_putByVaultaccountidAndAssetidAndAddressid","parameters":[{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account"},{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"},{"type":"string","description":"The address for which to add a description. For XRP, use
:, for all other assets, use only the address"},{}],"description":"Update address description.\n\nUpdates the description of an existing address of an asset in a vault account."},{"method":"post","path":"/vault/accounts/{vaultAccountId}/{assetId}/addresses/{addressId}/set_customer_ref_id","name":"vault_accounts_addresses_set_customer_ref_id_postByVaultaccountidAndAssetidAndAddressid","parameters":[{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account"},{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"},{"type":"string","description":"The address for which to add a description. For XRP, use
:, for all other assets, use only the address"},{}],"description":"Assign AML customer reference ID.\n\nSets an AML/KYT customer reference ID for a specific address."},{"method":"post","path":"/vault/accounts/{vaultAccountId}/{assetId}/addresses/{addressId}/create_legacy","name":"vault_accounts_addresses_create_legacy_postByVaultaccountidAndAssetidAndAddressid","parameters":[{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account"},{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"},{"type":"string","description":"The segwit address to translate"}],"output":{"type":"object","properties":{"address":{"type":"string"},"legacyAddress":{"type":"string"},"enterpriseAddress":{"type":"string"},"tag":{"type":"string"},"bip44AddressIndex":{"type":"integer"}}},"description":"Convert a segwit address to legacy format.\n\nConverts an existing segwit address to the legacy format."},{"method":"get","path":"/vault/accounts/{vaultAccountId}/{assetId}/unspent_inputs","name":"vault_accounts_unspent_inputs_getByVaultaccountidAndAssetid","parameters":[{"type":"string","format":"numeric","x-fb-entity":"vault_account","description":"The ID of the vault account"},{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"}],"output":{"type":"array","items":{"type":"object","properties":{"input":{"type":"object","properties":{"txHash":{"type":"string"},"index":{"type":"number"}}},"address":{"type":"string"},"amount":{"type":"string"},"confirmations":{"type":"number"},"status":{"type":"string"}}}},"description":"Get UTXO unspent inputs information.\n\nReturns unspent inputs information of an asset in a vault account."},{"method":"get","path":"/vault/public_key_info/","name":"vault_public_key_info_get","parameters":[{"type":"object","properties":{"derivationPath":{"type":"string"},"algorithm":{"type":"string"},"compressed":{"type":"boolean"}},"required":["derivationPath","algorithm"]}],"output":{"type":"object","properties":{"algorithm":{"type":"string"},"derivationPath":{"type":"array","items":{"type":"number"}},"publicKey":{"type":"string"}}},"description":"Get the public key information.\n\nGets the public key information based on derivation path and signing algorithm."},{"method":"get","path":"/vault/accounts/{vaultAccountId}/{assetId}/{change}/{addressIndex}/public_key_info","name":"vault_accounts_public_key_info_getByVaultaccountidAndAssetidAndChangeAndAddressindex","parameters":[{"type":"string","format":"numeric","x-fb-entity":"vault_account"},{"type":"string","x-fb-entity":"asset"},{"type":"number"},{"type":"number"},{"type":"object","properties":{"compressed":{"type":"boolean"}},"required":[]}],"output":{"type":"object","properties":{"algorithm":{"type":"string"},"derivationPath":{"type":"array","items":{"type":"number"}},"publicKey":{"type":"string"}}},"description":"Get the public key for a vault account.\n\nGets the public key information for the vault account."},{"method":"get","path":"/vault/assets","name":"vault_assets_get","parameters":[{"type":"object","properties":{"accountNamePrefix":{"type":"string"},"accountNameSuffix":{"type":"string"}},"required":[]}],"output":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"total":{"description":"The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.","type":"string"},"balance":{"deprecated":true,"description":"Deprecated - replaced by \"total\"","type":"string"},"available":{"description":"Funds available for transfer. Equals the blockchain balance minus any locked amounts","type":"string"},"pending":{"description":"The cumulative balance of all transactions pending to be cleared","type":"string"},"frozen":{"description":"The cumulative frozen balance","type":"string"},"lockedAmount":{"description":"Funds in outgoing transactions that are not yet published to the network","type":"string"},"staked":{"description":"Staked balance","type":"string"},"totalStakedCPU":{"type":"number","description":"Deprecated"},"totalStakedNetwork":{"type":"string","description":"Deprecated"},"selfStakedCPU":{"type":"string","description":"Deprecated"},"selfStakedNetwork":{"type":"string","description":"Deprecated"},"pendingRefundCPU":{"type":"string","description":"Deprecated"},"pendingRefundNetwork":{"type":"string","description":"Deprecated"},"blockHeight":{"type":"string"},"blockHash":{"type":"string"},"rewardsInfo":{"type":"object","properties":{"pendingRewards":{"description":"Amount that is pending for rewards","type":"string"}}}}}},"description":"Get asset balance for chosen assets.\n\nGets the assets amount summary for all accounts or filtered accounts."},{"method":"get","path":"/vault/assets/{assetId}","name":"vault_assets_getByAssetid","parameters":[{"type":"string","x-fb-entity":"asset"}],"output":{"type":"object","properties":{"id":{"type":"string"},"total":{"description":"The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.","type":"string"},"balance":{"deprecated":true,"description":"Deprecated - replaced by \"total\"","type":"string"},"available":{"description":"Funds available for transfer. Equals the blockchain balance minus any locked amounts","type":"string"},"pending":{"description":"The cumulative balance of all transactions pending to be cleared","type":"string"},"frozen":{"description":"The cumulative frozen balance","type":"string"},"lockedAmount":{"description":"Funds in outgoing transactions that are not yet published to the network","type":"string"},"staked":{"description":"Staked balance","type":"string"},"totalStakedCPU":{"type":"number","description":"Deprecated"},"totalStakedNetwork":{"type":"string","description":"Deprecated"},"selfStakedCPU":{"type":"string","description":"Deprecated"},"selfStakedNetwork":{"type":"string","description":"Deprecated"},"pendingRefundCPU":{"type":"string","description":"Deprecated"},"pendingRefundNetwork":{"type":"string","description":"Deprecated"},"blockHeight":{"type":"string"},"blockHash":{"type":"string"},"rewardsInfo":{"type":"object","properties":{"pendingRewards":{"description":"Amount that is pending for rewards","type":"string"}}}}},"description":"Get vault balance by asset.\n\nGets the vault balance summary for an asset."},{"method":"get","path":"/exchange_accounts","name":"exchange_accounts_get","parameters":[],"output":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["BINANCE","BINANCEUS","BITFINEX","BITHUMB","BITMEX","BITSO","BITSTAMP","BITTREX","CIRCLE","COINBASEPRO","COINMETRO","COINSPRO","CRYPTOCOM","DERIBIT","FTX","FIXUS","GEMINI","HITBTC","HUOBI","KORBIT","KRAKEN","LIQUID","POLONIEX","OKCOIN","OKEX","SEEDCX"]},"name":{"type":"string","description":"Display name of the exchange account"},"status":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"total":{"type":"string"},"available":{"type":"string"}}}},"tradingAccounts":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"total":{"type":"string"},"available":{"type":"string"}}}}}}},"isSubaccount":{"type":"boolean","description":"True if the account is a subaccount in an exchange"},"mainAccountId":{"description":"if the account is a sub-account, the ID of the main account","type":"string"}}}},"description":"List exchange accounts.\n\nReturns all exchange accounts."},{"method":"get","path":"/exchange_accounts/{exchangeAccountId}","name":"exchange_accounts_getByExchangeaccountid","parameters":[{"type":"string","minimum":1,"description":"The ID of the exchange account to return"}],"output":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["BINANCE","BINANCEUS","BITFINEX","BITHUMB","BITMEX","BITSO","BITSTAMP","BITTREX","CIRCLE","COINBASEPRO","COINMETRO","COINSPRO","CRYPTOCOM","DERIBIT","FTX","FIXUS","GEMINI","HITBTC","HUOBI","KORBIT","KRAKEN","LIQUID","POLONIEX","OKCOIN","OKEX","SEEDCX"]},"name":{"type":"string","description":"Display name of the exchange account"},"status":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"total":{"type":"string"},"available":{"type":"string"}}}},"tradingAccounts":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"total":{"type":"string"},"available":{"type":"string"}}}}}}},"isSubaccount":{"type":"boolean","description":"True if the account is a subaccount in an exchange"},"mainAccountId":{"description":"if the account is a sub-account, the ID of the main account","type":"string"}}},"description":"Find a specific exchange account.\n\nReturns an exchange account by ID."},{"method":"post","path":"/exchange_accounts/{exchangeAccountId}/internal_transfer","name":"exchange_accounts_internal_transfer_postByExchangeaccountid","parameters":[{"type":"string","minimum":1,"description":"The ID of the exchange account to return"},{}],"description":"Internal tranfer for exchange accounts.\n\nTransfers funds between trading accounts under the same exchange account."},{"method":"post","path":"/exchange_accounts/{exchangeAccountId}/convert","name":"exchange_accounts_convert_postByExchangeaccountid","parameters":[{"type":"string","minimum":1,"description":"The ID of the exchange account. Please make sure the exchange supports conversions. To find the ID of your exchange account, use GET/exchange_accounts."},{}],"description":"Convert exchange account funds from the source asset to the destination asset. Coinbase (USD to USDC, USDC to USD) and Bitso (MXN to USD) are supported conversions."},{"method":"get","path":"/exchange_accounts/{exchangeAccountId}/{assetId}","name":"exchange_accounts_getByExchangeaccountidAndAssetid","parameters":[{"type":"string","minimum":1,"description":"The ID of the exchange account to return"},{"type":"string","minimum":1,"description":"The ID of the asset to return"}],"output":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"total":{"type":"string"},"available":{"type":"string"}}},"description":"Find an asset for an exchange account.\n\nReturns an asset for an exchange account."},{"method":"get","path":"/fiat_accounts","name":"fiat_accounts_get","parameters":[],"output":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["BLINC"]},"name":{"type":"string","description":"Display name of the fiat account"},"address":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"}}}}}}},"description":"List fiat accounts.\n\nReturns all fiat accounts."},{"method":"get","path":"/fiat_accounts/{accountId}","name":"fiat_accounts_getByAccountid","parameters":[{"type":"string","minimum":1,"description":"The ID of the fiat account to return"}],"output":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["BLINC"]},"name":{"type":"string","description":"Display name of the fiat account"},"address":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"}}}}}},"description":"Find a specific fiat account.\n\nReturns a fiat account by ID."},{"method":"post","path":"/fiat_accounts/{accountId}/redeem_to_linked_dda","name":"fiat_accounts_redeem_to_linked_dda_postByAccountid","parameters":[{"type":"string","minimum":1,"description":"The ID of the fiat account to use"},{}],"description":"Redeem funds to DDA.\n\nRedeems funds to the linked DDA."},{"method":"post","path":"/fiat_accounts/{accountId}/deposit_from_linked_dda","name":"fiat_accounts_deposit_from_linked_dda_postByAccountid","parameters":[{"type":"string","minimum":1,"description":"The ID of the fiat account to use"},{}],"description":"Deposit funds from DDA.\n\nDeposits funds from the linked DDA."},{"method":"get","path":"/network_connections","name":"network_connections_get","parameters":[],"output":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"localChannel":{"deprecated":true,"description":"Deprecated - Replaced by `localNetworkId`","type":"object","properties":{"networkId":{"type":"string"},"name":{"type":"string"}}},"remoteChannel":{"deprecated":true,"description":"Deprecated - Replaced by `remoteNetworkId`","type":"object","properties":{"networkId":{"type":"string"},"name":{"type":"string"}}},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"localNetworkId":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"remoteNetworkId":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"routingPolicy":{"type":"object","properties":{"crypto":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["VAULT","EXCHANGE"],"description":"The type of destination account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the destination account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"signet":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]}]},"signet_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]}]}}}},"required":["id","localNetworkId","remoteNetworkId","routingPolicy","status"]}},"description":"List network connections.\n\nReturns all network connections.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"post","path":"/network_connections","name":"network_connections_post","parameters":[{"type":"object","properties":{"localNetworkId":{"type":"string","description":"The network ID of the profile trying to create the connection."},"remoteNetworkId":{"type":"string","description":"The network ID the profile is attempting to connect to."},"routingPolicy":{"type":"object","properties":{"crypto":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["VAULT","EXCHANGE"],"description":"The type of destination account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the destination account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"signet":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]}]},"signet_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]}]}}}},"required":["localNetworkId","remoteNetworkId"]}],"output":{"type":"object","properties":{"id":{"type":"string"},"localChannel":{"deprecated":true,"description":"Deprecated - Replaced by `localNetworkId`","type":"object","properties":{"networkId":{"type":"string"},"name":{"type":"string"}}},"remoteChannel":{"deprecated":true,"description":"Deprecated - Replaced by `remoteNetworkId`","type":"object","properties":{"networkId":{"type":"string"},"name":{"type":"string"}}},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"localNetworkId":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"remoteNetworkId":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"routingPolicy":{"type":"object","properties":{"crypto":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["VAULT","EXCHANGE"],"description":"The type of destination account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the destination account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"signet":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]}]},"signet_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]}]}}}},"required":["id","localNetworkId","remoteNetworkId","routingPolicy","status"]},"description":"Creates a new network connection.\n\nInitiates a new network connection.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"patch","path":"/network_connections/{connectionId}/set_routing_policy","name":"network_connections_set_routing_policy_patchByConnectionid","parameters":[{"type":"string","minimum":1,"description":"The ID of the network connection"},{}],"output":{},"description":"Update network connection routing policy.\n\nUpdates an existing network connection's routing policy.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"get","path":"/network_connections/{connectionId}/is_third_party_routing/{assetType}","name":"network_connections_is_third_party_routing_getByConnectionidAndAssettype","parameters":[{"type":"string","minimum":1,"description":"The ID of the network connection"},{"type":"string","enum":["CRYPTO","SIGNET","SEN","SIGNET_TEST","SEN_TEST"],"description":"The destination asset type"}],"output":{},"description":"Retrieve third-party network routing validation by asset type.\n\nThe Fireblocks Network allows for flexibility around incoming deposits. A receiver can receive network deposits to locations other than Fireblocks. This endpoint validates whether future transactions are routed to the displayed recipient or to a 3rd party."},{"method":"get","path":"/network_connections/{connectionId}","name":"network_connections_getByConnectionid","parameters":[{"type":"string","minimum":1,"description":"The ID of the connection"}],"output":{"type":"object","properties":{"id":{"type":"string"},"localChannel":{"deprecated":true,"description":"Deprecated - Replaced by `localNetworkId`","type":"object","properties":{"networkId":{"type":"string"},"name":{"type":"string"}}},"remoteChannel":{"deprecated":true,"description":"Deprecated - Replaced by `remoteNetworkId`","type":"object","properties":{"networkId":{"type":"string"},"name":{"type":"string"}}},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"localNetworkId":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"remoteNetworkId":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"routingPolicy":{"type":"object","properties":{"crypto":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["VAULT","EXCHANGE"],"description":"The type of destination account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the destination account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"signet":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]}]},"signet_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["DEFAULT"],"description":"The network routing logic."}},"required":["scheme"]}]}}}},"required":["id","localNetworkId","remoteNetworkId","routingPolicy","status"]},"description":"Get a network connection.\n\nGets a network connection by ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"delete","path":"/network_connections/{connectionId}","name":"network_connections_eraseByConnectionid","parameters":[{"type":"string","minimum":1,"description":"The ID of the network connection to delete"}],"output":{},"description":"Deletes a network connection by ID.\n\nDeletes an existing network connection specified by its connection ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"get","path":"/network_ids","name":"network_ids_get","parameters":[],"output":{"type":"array","items":{}},"description":"Returns all network IDs, both local IDs and discoverable remote IDs.\n\nRetrieves a list of all local and discoverable remote network IDs.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"post","path":"/network_ids","name":"network_ids_post","parameters":[{}],"output":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"routingPolicy":{"type":"object","properties":{"crypto":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["VAULT","EXCHANGE"],"description":"The type of destination account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the destination account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"signet":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]}]},"signet_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]}]}}},"isDiscoverable":{"type":"boolean","description":"The specific network is discoverable."}}},"description":"Creates a new Network ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"get","path":"/network_ids/{networkId}","name":"network_ids_getByNetworkid","parameters":[{"type":"string","minimum":1,"description":"The ID of the network"}],"output":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"routingPolicy":{"type":"object","properties":{"crypto":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["VAULT","EXCHANGE"],"description":"The type of destination account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the destination account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"signet":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]}]},"sen_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]}]},"signet_test":{"oneOf":[{"type":"object","properties":{"scheme":{"type":"string","enum":["NONE"],"description":"No network routing logic."}},"required":["scheme"]},{"type":"object","properties":{"scheme":{"type":"string","enum":["CUSTOM"],"description":"The network routing logic."},"dstType":{"type":"string","enum":["FIAT_ACCOUNT"],"description":"The fiat account the funds are being sent to."},"dstId":{"type":"string","description":"The ID of the fiat account the funds are being sent to."}},"required":["scheme","dstType","dstId"]}]}}},"isDiscoverable":{"type":"boolean","description":"The specific network is discoverable."}}},"description":"Returns specific network ID.\n\nRetrieves a network by its ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"delete","path":"/network_ids/{networkId}","name":"network_ids_eraseByNetworkid","parameters":[{"type":"string","minimum":1,"description":"The ID of the network"}],"output":{},"description":"Deletes specific network ID.\n\nDeletes a network by its ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"patch","path":"/network_ids/{networkId}/set_routing_policy","name":"network_ids_set_routing_policy_patchByNetworkid","parameters":[{"type":"string","minimum":1,"description":"The ID of the network"},{}],"output":{},"description":"Update network id routing policy.\n\nUpdates the routing policy of a specified network ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"patch","path":"/network_ids/{networkId}/set_discoverability","name":"network_ids_set_discoverability_patchByNetworkid","parameters":[{"type":"string","minimum":1,"description":"The ID of the network"},{}],"output":{},"description":"Update network ID's discoverability.\n\nUpdate whether or not the network ID is discoverable by others.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"patch","path":"/network_ids/{networkId}/set_name","name":"network_ids_set_name_patchByNetworkid","parameters":[{"type":"string","minimum":1,"description":"The ID of the network"},{}],"output":{},"description":"Update network ID's name.\n\nUpdates name of a specified network ID.\n\n**Note:** This API call is subject to Flexible Routing Schemes.\n\nYour routing policy defines how your transactions are routed.\nYou can choose 1 of the 3 different schemes mentioned below for each asset type:\n - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.\n - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.\n - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as \"Profile Routing\"\n\nDefault Workspace Presets:\n - Network Profile Crypto → **Custom**\n - Network Profile FIAT → **None**\n - Network Connection Crypto → **Default**\n - Network Connection FIAT → **Default**\n\n - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).\n"},{"method":"get","path":"/internal_wallets","name":"internal_wallets_get","parameters":[],"output":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"customerRefId":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}}}},"required":["id","name","status"]}},"description":"List internal wallets.\n\nGets a list of internal wallets.\n\n**Note**: BTC-based assets belonging to whitelisted addresses cannot be retrieved between 00:00 UTC and 00:01 UTC daily due to third-party provider, Blockchair, being unavailable for this 60 second period. Please wait until the next minute to retrieve BTC-based assets.\n"},{"method":"post","path":"/internal_wallets","name":"internal_wallets_post","parameters":[{}],"output":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"customerRefId":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}}}},"required":["id","name","status"]},"description":"Create an internal wallet.\n\nCreates a new internal wallet with the requested name."},{"method":"get","path":"/internal_wallets/{walletId}","name":"internal_wallets_getByWalletid","parameters":[{"type":"string","minimum":1,"description":"The ID of the wallet to return"}],"output":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"customerRefId":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}}}},"required":["id","name","status"]},"description":"Get assets for internal wallet.\n\nReturns all assets in an internal wallet by ID."},{"method":"delete","path":"/internal_wallets/{walletId}","name":"internal_wallets_eraseByWalletid","parameters":[{"type":"string","minimum":1,"description":"The ID of the wallet to delete"}],"description":"Delete an internal wallet.\n\nDeletes an internal wallet by ID."},{"method":"post","path":"/internal_wallets/{walletId}/set_customer_ref_id","name":"internal_wallets_set_customer_ref_id_postByWalletid","parameters":[{"type":"string","minimum":1,"description":"The wallet ID"},{}],"description":"Set an AML/KYT customer reference ID for an internal wallet.\n\nSets an AML/KYT customer reference ID for the specific internal wallet."},{"method":"get","path":"/internal_wallets/{walletId}/{assetId}","name":"internal_wallets_getByWalletidAndAssetid","parameters":[{"type":"string","minimum":1,"description":"The ID of the wallet"},{"type":"string","minimum":1,"x-fb-entity":"asset","description":"The ID of the asset to return"}],"output":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}},"description":"Get an asset from an internal wallet.\n\nReturns information for an asset in an internal wallet."},{"method":"post","path":"/internal_wallets/{walletId}/{assetId}","name":"internal_wallets_postByWalletidAndAssetid","parameters":[{"type":"string","description":"The ID of the wallet"},{"type":"string","x-fb-entity":"asset","description":"The ID of the asset to add"},{}],"output":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}},"description":"Add an asset to an internal wallet.\n\nAdds an asset to an existing internal wallet."},{"method":"delete","path":"/internal_wallets/{walletId}/{assetId}","name":"internal_wallets_eraseByWalletidAndAssetid","parameters":[{"type":"string","minimum":1,"description":"The ID of the wallet"},{"type":"string","minimum":1,"x-fb-entity":"asset","description":"The ID of the asset to delete"}],"description":"Delete a whitelisted address from an internal wallet.\n\nDeletes a whitelisted address (for an asset) from an internal wallet."},{"method":"get","path":"/external_wallets","name":"external_wallets_get","parameters":[],"output":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"customerRefId":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}}}},"required":["id","name","status"]}},"description":"List external wallets.\n\nGets a list of external wallets under the workspace."},{"method":"post","path":"/external_wallets","name":"external_wallets_post","parameters":[{}],"output":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"customerRefId":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}}}},"required":["id","name","status"]},"description":"Create an external wallet.\n\nCreates a new external wallet with the requested name."},{"method":"get","path":"/external_wallets/{walletId}","name":"external_wallets_getByWalletid","parameters":[{"type":"string","minimum":1,"description":"The ID of the wallet to return"}],"output":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"customerRefId":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}}}},"required":["id","name","status"]},"description":"Find an external wallet.\n\nReturns an external wallet by ID."},{"method":"delete","path":"/external_wallets/{walletId}","name":"external_wallets_eraseByWalletid","parameters":[{"type":"string","minimum":1,"description":"The ID of the wallet to delete"}],"description":"Delete an external wallet.\n\nDeletes an external wallet by ID."},{"method":"post","path":"/external_wallets/{walletId}/set_customer_ref_id","name":"external_wallets_set_customer_ref_id_postByWalletid","parameters":[{"type":"string","minimum":1,"description":"The wallet ID"},{}],"description":"Set an AML customer reference ID for an external wallet.\n\nSets an AML/KYT customer reference ID for the specific external wallet."},{"method":"get","path":"/external_wallets/{walletId}/{assetId}","name":"external_wallets_getByWalletidAndAssetid","parameters":[{"type":"string","minimum":1,"description":"The ID of the wallet"},{"type":"string","minimum":1,"x-fb-entity":"asset","description":"The ID of the asset to return"}],"output":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"},"additionalInfo":{"type":"array","items":{"type":"object","properties":{"accountHolderGivenName":{"type":"string"},"accountHolderSurname":{"type":"string"},"accountHolderCity":{"type":"string"},"accountHolderCountry":{"type":"string"},"accountHolderAddress1":{"type":"string"},"accountHolderAddress2":{"type":"string"},"accountHolderDistrict":{"type":"string"},"accountHolderPostalCode":{"type":"string"},"abaRoutingNumber":{"type":"string"},"abaAccountNumber":{"type":"string"},"abaCountry":{"type":"string"},"iban":{"type":"string"},"ibanCity":{"type":"string"},"ibanCountry":{"type":"string"},"speiClabe":{"type":"string"},"speiName":{"type":"string"}}}}}},"description":"Get an asset from an external wallet.\n\nReturns an external wallet by wallet ID and asset ID."},{"method":"post","path":"/external_wallets/{walletId}/{assetId}","name":"external_wallets_postByWalletidAndAssetid","parameters":[{"type":"string","description":"The ID of the wallet"},{"type":"string","x-fb-entity":"asset","description":"The ID of the asset to add"},{}],"output":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"},"additionalInfo":{"type":"array","items":{"type":"object","properties":{"accountHolderGivenName":{"type":"string"},"accountHolderSurname":{"type":"string"},"accountHolderCity":{"type":"string"},"accountHolderCountry":{"type":"string"},"accountHolderAddress1":{"type":"string"},"accountHolderAddress2":{"type":"string"},"accountHolderDistrict":{"type":"string"},"accountHolderPostalCode":{"type":"string"},"abaRoutingNumber":{"type":"string"},"abaAccountNumber":{"type":"string"},"abaCountry":{"type":"string"},"iban":{"type":"string"},"ibanCity":{"type":"string"},"ibanCountry":{"type":"string"},"speiClabe":{"type":"string"},"speiName":{"type":"string"}}}}}},"description":"Add an asset to an external wallet.\n\nAdds an asset to an existing external wallet."},{"method":"delete","path":"/external_wallets/{walletId}/{assetId}","name":"external_wallets_eraseByWalletidAndAssetid","parameters":[{"type":"string","minimum":1,"description":"The ID of the wallet"},{"type":"string","minimum":1,"x-fb-entity":"asset","description":"The ID of the asset to delete"}],"description":"Delete an asset from an external wallet.\n\nDeletes an external wallet asset by ID."},{"method":"get","path":"/contracts","name":"contracts_get","parameters":[],"output":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"customerRefId":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}}}},"required":["id","name","status"]}},"description":"List contracts.\n\nGets a list of contracts."},{"method":"post","path":"/contracts","name":"contracts_post","parameters":[{}],"output":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"customerRefId":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}}}},"required":["id","name","status"]},"description":"Create a contract.\n\nCreates a new contract."},{"method":"get","path":"/contracts/{contractId}","name":"contracts_getByContractid","parameters":[{"type":"string","minimum":1,"description":"The ID of the contract to return"}],"output":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"customerRefId":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"}}}}},"required":["id","name","status"]},"description":"Find a specific contract.\n\nReturns a contract by ID."},{"method":"delete","path":"/contracts/{contractId}","name":"contracts_eraseByContractid","parameters":[{"type":"string","minimum":1,"description":"The ID of the contract to delete"}],"description":"Delete a contract.\n\nDeletes a contract by ID."},{"method":"get","path":"/contracts/{contractId}/{assetId}","name":"contracts_getByContractidAndAssetid","parameters":[{"type":"string","minimum":1,"description":"The ID of the contract"},{"type":"string","minimum":1,"x-fb-entity":"asset","description":"The ID of the asset to return"}],"output":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"},"additionalInfo":{"type":"array","items":{"type":"object","properties":{"accountHolderGivenName":{"type":"string"},"accountHolderSurname":{"type":"string"},"accountHolderCity":{"type":"string"},"accountHolderCountry":{"type":"string"},"accountHolderAddress1":{"type":"string"},"accountHolderAddress2":{"type":"string"},"accountHolderDistrict":{"type":"string"},"accountHolderPostalCode":{"type":"string"},"abaRoutingNumber":{"type":"string"},"abaAccountNumber":{"type":"string"},"abaCountry":{"type":"string"},"iban":{"type":"string"},"ibanCity":{"type":"string"},"ibanCountry":{"type":"string"},"speiClabe":{"type":"string"},"speiName":{"type":"string"}}}}}},"description":"Find a contract asset.\n\nReturns a contract asset by ID."},{"method":"post","path":"/contracts/{contractId}/{assetId}","name":"contracts_postByContractidAndAssetid","parameters":[{"type":"string","description":"The ID of the contract"},{"type":"string","x-fb-entity":"asset","description":"The ID of the asset to add"},{}],"output":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["WAITING_FOR_APPROVAL","APPROVED","CANCELLED","REJECTED","FAILED"]},"address":{"type":"string"},"tag":{"type":"string"},"activationTime":{"type":"string"},"additionalInfo":{"type":"array","items":{"type":"object","properties":{"accountHolderGivenName":{"type":"string"},"accountHolderSurname":{"type":"string"},"accountHolderCity":{"type":"string"},"accountHolderCountry":{"type":"string"},"accountHolderAddress1":{"type":"string"},"accountHolderAddress2":{"type":"string"},"accountHolderDistrict":{"type":"string"},"accountHolderPostalCode":{"type":"string"},"abaRoutingNumber":{"type":"string"},"abaAccountNumber":{"type":"string"},"abaCountry":{"type":"string"},"iban":{"type":"string"},"ibanCity":{"type":"string"},"ibanCountry":{"type":"string"},"speiClabe":{"type":"string"},"speiName":{"type":"string"}}}}}},"description":"Add an asset to a contract.\n\nAdds an asset to an existing contract."},{"method":"delete","path":"/contracts/{contractId}/{assetId}","name":"contracts_eraseByContractidAndAssetid","parameters":[{"type":"string","minimum":1,"description":"The ID of the contract"},{"type":"string","minimum":1,"x-fb-entity":"asset","description":"The ID of the asset to delete"}],"description":"Delete a contract asset.\n\nDeletes a contract asset by ID."},{"method":"get","path":"/supported_assets","name":"supported_assets_get","parameters":[],"output":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["ALGO_ASSET","BASE_ASSET","BEP20","COMPOUND","ERC20","FIAT","SOL_ASSET","TRON_TRC20","XLM_ASSET","XDB_ASSET"]},"contractAddress":{"type":"string"},"nativeAsset":{"type":"string"},"decimals":{"type":"number"}},"required":["id","name","type"]}},"description":"List all asset types supported by Fireblocks.\n\nReturns all asset types supported by Fireblocks."},{"method":"get","path":"/estimate_network_fee","name":"estimate_network_fee_get","parameters":[{"type":"object","properties":{"assetId":{"type":"string","x-fb-entity":"asset","description":"The asset for which to estimate the fee"}},"required":["assetId"]}],"output":{"type":"object","properties":{"low":{"type":"object","properties":{"feePerByte":{"type":"string"},"gasPrice":{"type":"string"},"networkFee":{"type":"string"},"baseFee":{"description":"(optional) Base Fee according to EIP-1559 (ETH assets)","type":"string"},"priorityFee":{"description":"(optional) Priority Fee according to EIP-1559 (ETH assets)","type":"string"}}},"medium":{"type":"object","properties":{"feePerByte":{"type":"string"},"gasPrice":{"type":"string"},"networkFee":{"type":"string"},"baseFee":{"description":"(optional) Base Fee according to EIP-1559 (ETH assets)","type":"string"},"priorityFee":{"description":"(optional) Priority Fee according to EIP-1559 (ETH assets)","type":"string"}}},"high":{"type":"object","properties":{"feePerByte":{"type":"string"},"gasPrice":{"type":"string"},"networkFee":{"type":"string"},"baseFee":{"description":"(optional) Base Fee according to EIP-1559 (ETH assets)","type":"string"},"priorityFee":{"description":"(optional) Priority Fee according to EIP-1559 (ETH assets)","type":"string"}}}},"required":["low","medium","high"]},"description":"Estimate the required fee for an asset.\n\nGets the estimated required fee for an asset. For UTXO based assets, the response will contain the suggested fee per byte, for ETH/ETC based assets, the suggested gas price, and for XRP/XLM, the transaction fee."},{"method":"get","path":"/transactions/validate_address/{assetId}/{address}","name":"transactions_validate_address_getByAssetidAndAddress","parameters":[{"type":"string","x-fb-entity":"asset","description":"The asset of the address"},{"type":"string","description":"The address to validate"}],"output":{"type":"object","properties":{"isValid":{"type":"boolean"},"isActive":{"type":"boolean"},"requiresTag":{"type":"boolean"}}},"description":"Validate destination address.\n\nChecks if an address is valid (for XRP, DOT, XLM, and EOS)."},{"method":"get","path":"/transactions","name":"transactions_get","parameters":[{"type":"object","properties":{"before":{"type":"string","description":"Unix timestamp in milliseconds. Returns only transactions created before the specified date"},"after":{"type":"string","description":"Unix timestamp in milliseconds. Returns only transactions created after the specified date"},"status":{"type":"string","description":"You can filter by one of the statuses."},"limit":{"type":"integer","minimum":1,"default":200,"description":"Limits the number of results. If not provided, a limit of 200 will be used. The maximum allowed limit is 500"},"sourceId":{"type":"string","description":"The source ID of the transaction"},"destId":{"type":"string","description":"The destination ID of the transaction"},"assets":{"type":"string","description":"A list of assets to filter by, seperated by commas"},"txHash":{"type":"string","description":"Returns only results with a specified txHash"},"sourceWalletId":{"type":"string","description":"Returns only results where the source is a specific end user wallet"},"destWalletId":{"type":"string","description":"Returns only results where the destination is a specific end user wallet"}},"required":[]}],"output":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"ID of the transaction."},"externalTxId":{"type":"string","description":"Unique transaction ID provided by the user. Fireblocks highly recommends setting an `externalTxId` for every transaction created, to avoid submitting the same transaction twice."},"status":{"type":"string","description":"The primary status of the transaction. For details, see [Primary transaction statuses](https://developers.fireblocks.com/reference/primary-transaction-statuses)."},"subStatus":{"type":"string","description":"See [Transaction substatuses](https://developers.fireblocks.com/reference/transaction-substatuses) for the list of transaction sub statuses."},"txHash":{"type":"string","description":"The hash of the transaction on the blockchain.\n * This parameter exists if at least one of the following conditions is met:\n\n 1. The transaction’s source type is `UNKNOWN`, `WHITELISTED_ADDRESS`, `NETWORK_CONNECTION`, `ONE_TIME_ADDRESS`, `FIAT_ACCOUNT` or `GAS_STATION`.\n\n 2. The transaction’s source type is `VAULT` and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these statuses prior to changing to `FAILED` or `REJECTED`. In some instances, transactions in status `BROADCASTING` will include the txHash as well.\n\n 3. The transaction’s source type is `EXCHANGE_ACCOUNT` and the transaction’s destination type is `VAULT`, and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these status prior to changing to `FAILED`.\n \n\n* In addition, the following conditions must be met:\n\n 1. The asset is a crypto asset (not fiat).\n\n 2. The transaction operation is not RAW or `TYPED_MESSAGE`."},"operation":{"type":"string","enum":["TRANSFER","BURN","CONTRACT_CALL","MINT","RAW","TYPED_MESSAGE","ENABLE_ASSET","STAKE","UNSTAKE","WITHDRAW","REDEEM_FROM_COMPOUND","SUPPLY_TO_COMPOUND"],"description":"* `TRANSFER` - Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n* `ENABLE_ASSET` - Algorand, DigitalBits, Solana, and Stellar require an on-chain transaction to create an asset wallet and enable the deposit address. This transaction is automatically created when adding assets on these blockchains at a vault account.\n* `STAKE` - Assign assets to a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `UNSTAKE` - Remove assets from a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `WITHDRAW` - Transfer assets from a dedicated staking vault account to another address. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n\n **Note:** Fireblocks will rename this type from `WITHDRAW` to a different type name soon. There will be a 7-day notice regarding the new type name.\n\n* `SUPPLY_TO_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n* `REDEEM_FROM_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n"},"note":{"type":"string","description":"Custom note, not sent to the blockchain, that describes the transaction at your Fireblocks workspace."},"assetId":{"type":"string","description":"The ID of the asset to transfer, for `TRANSFER`, `MINT`, `BURN`, `ENABLE_ASSET`,`STAKE` ,`UNSTAKE` or `WITHDRAW` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)","x-fb-entity":"asset"},"source":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"sourceAddress":{"type":"string","description":"For account based assets only, the source address of the transaction.\n**Note:** If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the source address. In any other case, this parameter will be empty."},"tag":{"type":"string","description":"Source address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)."},"destination":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"destinations":{"type":"array","description":"The transaction’s destinations.\n**Note:** In case the transaction is sent to a single destination, the `destination` parameter is used instead of this.","items":{"type":"object","properties":{"destination":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"destinationAddress":{"description":"Address where the asset was transferred."},"destinationAddressDescription":{"description":"Description of the address."},"amount":{"type":"string","description":"The amount to be sent to this destination."},"amountUSD":{"type":"string","description":"The USD value of the requested amount."},"amlScreeningResult":{"type":"object","description":"The result of the AML screening.","properties":{"provider":{"type":"string"},"payload":{"type":"object"}}},"customerRefId":{"description":"The ID for AML providers to associate the owner of funds with transactions."},"authorizationInfo":{"type":"object","description":"The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)","properties":{"allowOperatorAsAuthorizer":{"type":"boolean"},"logic":{"type":"string","enum":["AND","OR"]},"groups":{"type":"array","items":{"type":"object","properties":{"th":{"type":"number"},"users":{"type":"object","additionalProperties":{"type":"string","enum":["PENDING_AUTHORIZATION","APPROVED","REJECTED","NA"]}}}}}}}}}},"destinationAddress":{"type":"string","description":"Address where the asset were transferred.\nNotes:\n - For [Multi destination transactions](https://support.fireblocks.io/hc/en-us/articles/360018447980-Multi-destination-transactions), this parameter will be empty. In this case, you should refer to the destinations field.\n - If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the destination address. In any other case, this parameter will be empty."},"destinationAddressDescription":{"type":"string","description":"Description of the address."},"destinationTag":{"type":"string","description":"Destination address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)."},"contractCallDecodedData":{"description":"Decoded data for `CONTRACT_CALL` operations. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for setting this parameter's value.","type":"object","properties":{"contractName":{"type":"string"},"functionCalls":{"type":"array","items":{"type":"object"}}}},"amountInfo":{"type":"object","description":"The details of the requested amount to transfer.","properties":{"amount":{"description":"If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount.","type":"string"},"requestedAmount":{"description":"The amount requested by the user.","type":"string"},"netAmount":{"description":"The net amount of the transaction, after fee deduction.","type":"string"},"amountUSD":{"description":"The USD value of the requested amount.","type":"string"}}},"treatAsGrossAmount":{"type":"boolean","description":"For transactions initiated via this Fireblocks workspace, when set to `true`, the fee is deducted from the requested amount.\n\n**Note**: This parameter can only be considered if a transaction's asset is a base asset, such as ETH or MATIC. If the asset can't be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account."},"feeInfo":{"type":"object","description":"Details of the transaction's fee.","properties":{"networkFee":{"description":"The fee paid to the network","type":"string"},"serviceFee":{"description":"The total fee deducted by the exchange from the actual requested amount (serviceFee = amount - netAmount)","type":"string"},"gasPrice":{"type":"string"}}},"feeCurrency":{"type":"string","description":"The asset which was withdrawn to pay the transaction fee, for example ETH for EVM-based blockchains, BTC for Tether Omni."},"networkRecords":{"type":"array","description":"In case a single transaction resulted with multiple transfers, for example a result of a contract call, then this parameter specifies each transfer that took place on the blockchain. In case of a single transfer transaction, this parameter is empty.","items":{"type":"object","properties":{"source":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"destination":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"txHash":{"type":"string"},"networkFee":{"type":"string"},"assetId":{"type":"string","x-fb-entity":"asset"},"netAmount":{"description":"The net amount of the transaction, after fee deduction","type":"string"},"isDropped":{"type":"boolean"},"type":{"type":"string"},"destinationAddress":{"type":"string"},"sourceAddress":{"type":"string"},"amountUSD":{"type":"string"},"index":{"type":"number"},"rewardInfo":{"type":"object","description":"This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.","properties":{"srcRewards":{"type":"string"},"destRewards":{"type":"string"}}}}}},"createdAt":{"type":"number","description":"The transaction’s creation date and time, in unix timestamp."},"lastUpdated":{"type":"number","description":"The transaction’s last update date and time, in unix timestamp."},"createdBy":{"type":"string","description":"User ID of the initiator of the transaction."},"signedBy":{"type":"array","description":"User ID’s of the signers of the transaction.","items":{"type":"string"}},"rejectedBy":{"type":"string","description":"User ID of the user that rejected the transaction (in case it was rejected)."},"authorizationInfo":{"type":"object","description":"The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)","properties":{"allowOperatorAsAuthorizer":{"type":"boolean"},"logic":{"type":"string","enum":["AND","OR"]},"groups":{"type":"array","items":{"type":"object","properties":{"th":{"type":"number"},"users":{"type":"object","additionalProperties":{"type":"string","enum":["PENDING_AUTHORIZATION","APPROVED","REJECTED","NA"]}}}}}}},"exchangeTxId":{"type":"string","description":"If the transaction originated from an exchange, this is the ID of this transaction at the exchange."},"customerRefId":{"type":"string","description":"The ID for AML providers to associate the owner of funds with transactions."},"amlScreeningResult":{"type":"object","description":"The result of the AML screening.","properties":{"provider":{"type":"string"},"payload":{"type":"object"}}},"extraParameters":{"type":"object","properties":{},"description":"Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n"},"signedMessages":{"type":"object","description":"A list of signed messages returned for raw signing.","properties":{"content":{"type":"string"},"algorithm":{"type":"string","enum":["MPC_ECDSA_SECP256K1","MPC_EDDSA_ED25519"]},"derivationPath":{"type":"array","items":{"type":"number"}},"signature":{"type":"object","properties":{"fullSig":{"type":"string"},"r":{"type":"string"},"s":{"type":"string"},"v":{"type":"number"}}},"publicKey":{"type":"string"}}},"numOfConfirmations":{"type":"number","description":"The number of confirmations of the transaction. The number will increase until the transaction will be considered completed according to the confirmation policy."},"blockInfo":{"type":"object","description":"The block hash and height of the block that this transaction was mined in.\n **Note**: If an outgoing transaction uses the destinations object with more than one value in the array, blockHash is set to null.","properties":{"blockHeight":{"type":"string"},"blockHash":{"type":"string"}}},"index":{"type":"number","description":"For UTXO based assets this is the vOut, for Ethereum based, this is the index of the event of the contract call.\n **Note:** This field is not returned if a transaction uses the `destinations` object with more than one value."},"rewardInfo":{"type":"object","description":"This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.","properties":{"srcRewards":{"type":"string"},"destRewards":{"type":"string"}}},"systemMessages":{"type":"object","properties":{"type":{"type":"string","enum":["WARN","BLOCK"]},"message":{"type":"string","description":"A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.","example":"Slow transaction processing. Outgoing transactions might be stuck."}}},"addressType":{"type":"string","enum":["WHITELISTED","ONE_TIME"]},"requestedAmount":{"description":"The amount requested by the user. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","deprecated":true},"amount":{"description":"If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","deprecated":true},"netAmount":{"description":"The net amount of the transaction, after fee deduction. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","deprecated":true},"amountUSD":{"description":"The USD value of the requested amount. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","nullable":true,"deprecated":true},"serviceFee":{"description":"The total fee deducted by the exchange from the actual requested amount (`serviceFee` = `amount` - `netAmount`). Deprecated - please use the `feeInfo` field for accuracy.","type":"number","deprecated":true},"fee":{"description":"Deprecated - please use the `feeInfo` field for accuracy.","type":"number","deprecated":true},"networkFee":{"description":"The fee paid to the network. Deprecated - please use the `feeInfo` field for accuracy.","type":"number","deprecated":true}}}},"description":"List transaction history.\n\nLists the transaction history for your workspace."},{"method":"post","path":"/transactions","name":"transactions_post","parameters":[{"type":"object","properties":{"operation":{"type":"string","enum":["TRANSFER","BURN","CONTRACT_CALL","MINT","RAW","TYPED_MESSAGE"],"description":"* `TRANSFER` - The default value for an operation. Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n"},"note":{"type":"string","description":"Custom note, not sent to the blockchain, to describe the transaction at your Fireblocks workspace.","example":"Ticket 123"},"externalTxId":{"type":"string","description":"An optional but highly recommended parameter. Fireblocks will reject future transactions with same ID. \n \nYou should set this to a unique ID representing the transaction, to avoid submitting the same transaction twice. This helps with cases where submitting the transaction responds with an error code due to Internet interruptions, but the transaction was actually sent and processed. To validate whether a transaction has been processed, [Find a specific transaction by external transaction ID](https://developers.fireblocks.com/reference/get_transactions-external-tx-id-externaltxid).\n \nThere is no specific format required for this parameter.","example":"00000000-0000-0000-0000-000000000000"},"assetId":{"type":"string","description":"The ID of the asset to transfer, for `TRANSFER`, `MINT` or `BURN` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)","x-fb-entity":"asset","example":"ETH"},"source":{"type":"object","properties":{"type":{"type":"string","enum":["VAULT_ACCOUNT","EXCHANGE_ACCOUNT","INTERNAL_WALLET","EXTERNAL_WALLET","NETWORK_CONNECTION","FIAT_ACCOUNT","COMPOUND","GAS_STATION","ONE_TIME_ADDRESS","UNKNOWN","END_USER_WALLET"]},"subType":{"type":"string","enum":["BINANCE","BINANCEUS","BITFINEX","BITHUMB","BITMEX","BITSO","BITSTAMP","BITTREX","BLINC","BYBIT","CIRCLE","COINBASEEXCHANGE","COINBASEPRO","COINMETRO","COINSPRO","CRYPTOCOM","DERIBIT","GEMINI","HITBTC","HUOBI","INDEPENDENTRESERVE","KORBIT","KRAKEN","KRAKENINTL","KUCOIN","LIQUID","OKCOIN","OKEX","PAXOS","POLONIEX","External","Internal"]},"id":{"type":"string"},"name":{"type":"string"},"walletId":{"type":"string","format":"uuid"}},"required":["type"]},"destination":{},"destinations":{"type":"array","description":"For UTXO based blockchains, you can send a single transaction to multiple destinations.","items":{"type":"object","properties":{"amount":{"type":"string"},"destination":{}}}},"amount":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"0.02"},{"type":"number","description":"Number (deprecated)","example":0.02}],"description":"For `TRANSFER` operations, the requested amount to transfer, in the asset’s unit. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"treatAsGrossAmount":{"type":"boolean","description":"\"When set to `true`, the fee will be deducted from the requested amount.\"\n\n**Note**: This parameter can only be considered if a transaction’s asset is a base asset, such as ETH or MATIC. If the asset can’t be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account."},"forceSweep":{"type":"boolean","description":"For Polkadot, Kusama and Westend transactions only. When set to true, Fireblocks will empty the asset wallet.\n\n **Note:** If set to true when the source account is exactly 1 DOT, the transaction will fail. Any amount more or less than 1 DOT succeeds. This is a Polkadot blockchain limitation."},"feeLevel":{"type":"string","enum":["LOW","MEDIUM","HIGH"],"description":"For UTXO or EVM-based blockchains only. Defines the blockchain fee level which will be payed for the transaction. Alternatively, specific fee estimation parameters exist below."},"fee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For UTXO-based blockchains, the fee per bytes in the asset’s smallest unit (Satoshi, Latoshi, etc.). For Ripple, the fee for the transaction. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"priorityFee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"2"},{"type":"number","description":"Number (deprecated)","example":2}],"description":"For Ethereum-based blockchains only, the fee for EIP-1559 transaction pricing mechanism. Value is in Gwei. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"failOnLowFee":{"type":"boolean","description":"When set to `true`, in case the current `MEDIUM` fee level is higher than the one specified in the transaction, the transaction will fail to avoid getting stuck with no confirmations."},"maxFee":{"description":"The maximum fee (gas price or fee per byte) that should be payed for the transaction. In case the current value of the requested `feeLevel` is higher than this requested maximum fee. Represented by a numeric string for accurate precision.","type":"string","example":"120"},"gasLimit":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"21000"},{"type":"number","description":"Number (deprecated)","example":21000}],"description":"For EVM-based blockchains only. Units of gas required to process the transaction. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"gasPrice":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For non-EIP-1559, EVM-based transactions. Price per gas unit (in Ethereum this is specified in Gwei). Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"networkFee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For EVM-based blockchains only. The total transaction fee in the blockchain’s largest unit. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated. - The transaction blockchain fee.\n- For Ethereum, you can't pass gasPrice, gasLimit and networkFee all together.\n- A numeric value representation is required."},"replaceTxByHash":{"type":"string","description":"For EVM-based blockchains only. In case a transaction is stuck, specify the hash of the stuck transaction to replace it by this transaction with a higher fee, or to replace it with this transaction with a zero fee and drop it from the blockchain.","example":"00000000-0000-0000-0000-000000000000"},"extraParameters":{"type":"object","properties":{},"description":"Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n"},"customerRefId":{"type":"string","description":"The ID for AML providers to associate the owner of funds with transactions.","example":"abcdef"},"autoStaking":{"type":"boolean","description":"This feature is no longer supported."},"networkStaking":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"This feature is no longer supported."},"cpuStaking":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"This feature is no longer supported."}}}],"output":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the transaction."},"status":{"type":"string","description":"The primary status of the transaction. For details, see [Primary transaction statuses.] (https://developers.fireblocks.com/reference/primary-transaction-statuses)"},"systemMessages":{"type":"object","properties":{"type":{"type":"string","enum":["WARN","BLOCK"]},"message":{"type":"string","description":"A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.","example":"Slow transaction processing. Outgoing transactions might be stuck."}}}}},"description":"Create a new transaction.\n\nCreates a new transaction."},{"method":"post","path":"/transactions/estimate_fee","name":"transactions_estimate_fee_post","parameters":[{"type":"object","properties":{"operation":{"type":"string","enum":["TRANSFER","BURN","CONTRACT_CALL","MINT","RAW","TYPED_MESSAGE"],"description":"* `TRANSFER` - The default value for an operation. Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n"},"note":{"type":"string","description":"Custom note, not sent to the blockchain, to describe the transaction at your Fireblocks workspace.","example":"Ticket 123"},"externalTxId":{"type":"string","description":"An optional but highly recommended parameter. Fireblocks will reject future transactions with same ID. \n \nYou should set this to a unique ID representing the transaction, to avoid submitting the same transaction twice. This helps with cases where submitting the transaction responds with an error code due to Internet interruptions, but the transaction was actually sent and processed. To validate whether a transaction has been processed, [Find a specific transaction by external transaction ID](https://developers.fireblocks.com/reference/get_transactions-external-tx-id-externaltxid).\n \nThere is no specific format required for this parameter.","example":"00000000-0000-0000-0000-000000000000"},"assetId":{"type":"string","description":"The ID of the asset to transfer, for `TRANSFER`, `MINT` or `BURN` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)","x-fb-entity":"asset","example":"ETH"},"source":{"type":"object","properties":{"type":{"type":"string","enum":["VAULT_ACCOUNT","EXCHANGE_ACCOUNT","INTERNAL_WALLET","EXTERNAL_WALLET","NETWORK_CONNECTION","FIAT_ACCOUNT","COMPOUND","GAS_STATION","ONE_TIME_ADDRESS","UNKNOWN","END_USER_WALLET"]},"subType":{"type":"string","enum":["BINANCE","BINANCEUS","BITFINEX","BITHUMB","BITMEX","BITSO","BITSTAMP","BITTREX","BLINC","BYBIT","CIRCLE","COINBASEEXCHANGE","COINBASEPRO","COINMETRO","COINSPRO","CRYPTOCOM","DERIBIT","GEMINI","HITBTC","HUOBI","INDEPENDENTRESERVE","KORBIT","KRAKEN","KRAKENINTL","KUCOIN","LIQUID","OKCOIN","OKEX","PAXOS","POLONIEX","External","Internal"]},"id":{"type":"string"},"name":{"type":"string"},"walletId":{"type":"string","format":"uuid"}},"required":["type"]},"destination":{},"destinations":{"type":"array","description":"For UTXO based blockchains, you can send a single transaction to multiple destinations.","items":{"type":"object","properties":{"amount":{"type":"string"},"destination":{}}}},"amount":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"0.02"},{"type":"number","description":"Number (deprecated)","example":0.02}],"description":"For `TRANSFER` operations, the requested amount to transfer, in the asset’s unit. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"treatAsGrossAmount":{"type":"boolean","description":"\"When set to `true`, the fee will be deducted from the requested amount.\"\n\n**Note**: This parameter can only be considered if a transaction’s asset is a base asset, such as ETH or MATIC. If the asset can’t be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account."},"forceSweep":{"type":"boolean","description":"For Polkadot, Kusama and Westend transactions only. When set to true, Fireblocks will empty the asset wallet.\n\n **Note:** If set to true when the source account is exactly 1 DOT, the transaction will fail. Any amount more or less than 1 DOT succeeds. This is a Polkadot blockchain limitation."},"feeLevel":{"type":"string","enum":["LOW","MEDIUM","HIGH"],"description":"For UTXO or EVM-based blockchains only. Defines the blockchain fee level which will be payed for the transaction. Alternatively, specific fee estimation parameters exist below."},"fee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For UTXO-based blockchains, the fee per bytes in the asset’s smallest unit (Satoshi, Latoshi, etc.). For Ripple, the fee for the transaction. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"priorityFee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"2"},{"type":"number","description":"Number (deprecated)","example":2}],"description":"For Ethereum-based blockchains only, the fee for EIP-1559 transaction pricing mechanism. Value is in Gwei. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"failOnLowFee":{"type":"boolean","description":"When set to `true`, in case the current `MEDIUM` fee level is higher than the one specified in the transaction, the transaction will fail to avoid getting stuck with no confirmations."},"maxFee":{"description":"The maximum fee (gas price or fee per byte) that should be payed for the transaction. In case the current value of the requested `feeLevel` is higher than this requested maximum fee. Represented by a numeric string for accurate precision.","type":"string","example":"120"},"gasLimit":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"21000"},{"type":"number","description":"Number (deprecated)","example":21000}],"description":"For EVM-based blockchains only. Units of gas required to process the transaction. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"gasPrice":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For non-EIP-1559, EVM-based transactions. Price per gas unit (in Ethereum this is specified in Gwei). Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"networkFee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For EVM-based blockchains only. The total transaction fee in the blockchain’s largest unit. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated. - The transaction blockchain fee.\n- For Ethereum, you can't pass gasPrice, gasLimit and networkFee all together.\n- A numeric value representation is required."},"replaceTxByHash":{"type":"string","description":"For EVM-based blockchains only. In case a transaction is stuck, specify the hash of the stuck transaction to replace it by this transaction with a higher fee, or to replace it with this transaction with a zero fee and drop it from the blockchain.","example":"00000000-0000-0000-0000-000000000000"},"extraParameters":{"type":"object","properties":{},"description":"Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n"},"customerRefId":{"type":"string","description":"The ID for AML providers to associate the owner of funds with transactions.","example":"abcdef"},"autoStaking":{"type":"boolean","description":"This feature is no longer supported."},"networkStaking":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"This feature is no longer supported."},"cpuStaking":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"This feature is no longer supported."}}}],"output":{"type":"object","properties":{"low":{"type":"object","properties":{"feePerByte":{"type":"string"},"gasPrice":{"type":"string"},"gasLimit":{"type":"string"},"networkFee":{"type":"string"},"baseFee":{"description":"(optional) Base Fee according to EIP-1559 (ETH assets)","type":"string"},"priorityFee":{"description":"(optional) Priority Fee according to EIP-1559 (ETH assets)","type":"string"}}},"medium":{"type":"object","properties":{"feePerByte":{"type":"string"},"gasPrice":{"type":"string"},"gasLimit":{"type":"string"},"networkFee":{"type":"string"},"baseFee":{"description":"(optional) Base Fee according to EIP-1559 (ETH assets)","type":"string"},"priorityFee":{"description":"(optional) Priority Fee according to EIP-1559 (ETH assets)","type":"string"}}},"high":{"type":"object","properties":{"feePerByte":{"type":"string"},"gasPrice":{"type":"string"},"gasLimit":{"type":"string"},"networkFee":{"type":"string"},"baseFee":{"description":"(optional) Base Fee according to EIP-1559 (ETH assets)","type":"string"},"priorityFee":{"description":"(optional) Priority Fee according to EIP-1559 (ETH assets)","type":"string"}}}},"required":["low","medium","high"]},"description":"Estimate transaction fee.\n\nEstimates the transaction fee for a transaction request.\n* Note: Supports all Fireblocks assets except ZCash (ZEC)."},{"method":"get","path":"/transactions/{txId}","name":"transactions_getByTxid","parameters":[{"type":"string","minimum":1,"description":"The ID of the transaction to return"}],"output":{"type":"object","properties":{"id":{"type":"string","description":"ID of the transaction."},"externalTxId":{"type":"string","description":"Unique transaction ID provided by the user. Fireblocks highly recommends setting an `externalTxId` for every transaction created, to avoid submitting the same transaction twice."},"status":{"type":"string","description":"The primary status of the transaction. For details, see [Primary transaction statuses](https://developers.fireblocks.com/reference/primary-transaction-statuses)."},"subStatus":{"type":"string","description":"See [Transaction substatuses](https://developers.fireblocks.com/reference/transaction-substatuses) for the list of transaction sub statuses."},"txHash":{"type":"string","description":"The hash of the transaction on the blockchain.\n * This parameter exists if at least one of the following conditions is met:\n\n 1. The transaction’s source type is `UNKNOWN`, `WHITELISTED_ADDRESS`, `NETWORK_CONNECTION`, `ONE_TIME_ADDRESS`, `FIAT_ACCOUNT` or `GAS_STATION`.\n\n 2. The transaction’s source type is `VAULT` and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these statuses prior to changing to `FAILED` or `REJECTED`. In some instances, transactions in status `BROADCASTING` will include the txHash as well.\n\n 3. The transaction’s source type is `EXCHANGE_ACCOUNT` and the transaction’s destination type is `VAULT`, and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these status prior to changing to `FAILED`.\n \n\n* In addition, the following conditions must be met:\n\n 1. The asset is a crypto asset (not fiat).\n\n 2. The transaction operation is not RAW or `TYPED_MESSAGE`."},"operation":{"type":"string","enum":["TRANSFER","BURN","CONTRACT_CALL","MINT","RAW","TYPED_MESSAGE","ENABLE_ASSET","STAKE","UNSTAKE","WITHDRAW","REDEEM_FROM_COMPOUND","SUPPLY_TO_COMPOUND"],"description":"* `TRANSFER` - Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n* `ENABLE_ASSET` - Algorand, DigitalBits, Solana, and Stellar require an on-chain transaction to create an asset wallet and enable the deposit address. This transaction is automatically created when adding assets on these blockchains at a vault account.\n* `STAKE` - Assign assets to a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `UNSTAKE` - Remove assets from a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `WITHDRAW` - Transfer assets from a dedicated staking vault account to another address. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n\n **Note:** Fireblocks will rename this type from `WITHDRAW` to a different type name soon. There will be a 7-day notice regarding the new type name.\n\n* `SUPPLY_TO_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n* `REDEEM_FROM_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n"},"note":{"type":"string","description":"Custom note, not sent to the blockchain, that describes the transaction at your Fireblocks workspace."},"assetId":{"type":"string","description":"The ID of the asset to transfer, for `TRANSFER`, `MINT`, `BURN`, `ENABLE_ASSET`,`STAKE` ,`UNSTAKE` or `WITHDRAW` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)","x-fb-entity":"asset"},"source":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"sourceAddress":{"type":"string","description":"For account based assets only, the source address of the transaction.\n**Note:** If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the source address. In any other case, this parameter will be empty."},"tag":{"type":"string","description":"Source address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)."},"destination":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"destinations":{"type":"array","description":"The transaction’s destinations.\n**Note:** In case the transaction is sent to a single destination, the `destination` parameter is used instead of this.","items":{"type":"object","properties":{"destination":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"destinationAddress":{"description":"Address where the asset was transferred."},"destinationAddressDescription":{"description":"Description of the address."},"amount":{"type":"string","description":"The amount to be sent to this destination."},"amountUSD":{"type":"string","description":"The USD value of the requested amount."},"amlScreeningResult":{"type":"object","description":"The result of the AML screening.","properties":{"provider":{"type":"string"},"payload":{"type":"object"}}},"customerRefId":{"description":"The ID for AML providers to associate the owner of funds with transactions."},"authorizationInfo":{"type":"object","description":"The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)","properties":{"allowOperatorAsAuthorizer":{"type":"boolean"},"logic":{"type":"string","enum":["AND","OR"]},"groups":{"type":"array","items":{"type":"object","properties":{"th":{"type":"number"},"users":{"type":"object","additionalProperties":{"type":"string","enum":["PENDING_AUTHORIZATION","APPROVED","REJECTED","NA"]}}}}}}}}}},"destinationAddress":{"type":"string","description":"Address where the asset were transferred.\nNotes:\n - For [Multi destination transactions](https://support.fireblocks.io/hc/en-us/articles/360018447980-Multi-destination-transactions), this parameter will be empty. In this case, you should refer to the destinations field.\n - If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the destination address. In any other case, this parameter will be empty."},"destinationAddressDescription":{"type":"string","description":"Description of the address."},"destinationTag":{"type":"string","description":"Destination address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)."},"contractCallDecodedData":{"description":"Decoded data for `CONTRACT_CALL` operations. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for setting this parameter's value.","type":"object","properties":{"contractName":{"type":"string"},"functionCalls":{"type":"array","items":{"type":"object"}}}},"amountInfo":{"type":"object","description":"The details of the requested amount to transfer.","properties":{"amount":{"description":"If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount.","type":"string"},"requestedAmount":{"description":"The amount requested by the user.","type":"string"},"netAmount":{"description":"The net amount of the transaction, after fee deduction.","type":"string"},"amountUSD":{"description":"The USD value of the requested amount.","type":"string"}}},"treatAsGrossAmount":{"type":"boolean","description":"For transactions initiated via this Fireblocks workspace, when set to `true`, the fee is deducted from the requested amount.\n\n**Note**: This parameter can only be considered if a transaction's asset is a base asset, such as ETH or MATIC. If the asset can't be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account."},"feeInfo":{"type":"object","description":"Details of the transaction's fee.","properties":{"networkFee":{"description":"The fee paid to the network","type":"string"},"serviceFee":{"description":"The total fee deducted by the exchange from the actual requested amount (serviceFee = amount - netAmount)","type":"string"},"gasPrice":{"type":"string"}}},"feeCurrency":{"type":"string","description":"The asset which was withdrawn to pay the transaction fee, for example ETH for EVM-based blockchains, BTC for Tether Omni."},"networkRecords":{"type":"array","description":"In case a single transaction resulted with multiple transfers, for example a result of a contract call, then this parameter specifies each transfer that took place on the blockchain. In case of a single transfer transaction, this parameter is empty.","items":{"type":"object","properties":{"source":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"destination":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"txHash":{"type":"string"},"networkFee":{"type":"string"},"assetId":{"type":"string","x-fb-entity":"asset"},"netAmount":{"description":"The net amount of the transaction, after fee deduction","type":"string"},"isDropped":{"type":"boolean"},"type":{"type":"string"},"destinationAddress":{"type":"string"},"sourceAddress":{"type":"string"},"amountUSD":{"type":"string"},"index":{"type":"number"},"rewardInfo":{"type":"object","description":"This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.","properties":{"srcRewards":{"type":"string"},"destRewards":{"type":"string"}}}}}},"createdAt":{"type":"number","description":"The transaction’s creation date and time, in unix timestamp."},"lastUpdated":{"type":"number","description":"The transaction’s last update date and time, in unix timestamp."},"createdBy":{"type":"string","description":"User ID of the initiator of the transaction."},"signedBy":{"type":"array","description":"User ID’s of the signers of the transaction.","items":{"type":"string"}},"rejectedBy":{"type":"string","description":"User ID of the user that rejected the transaction (in case it was rejected)."},"authorizationInfo":{"type":"object","description":"The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)","properties":{"allowOperatorAsAuthorizer":{"type":"boolean"},"logic":{"type":"string","enum":["AND","OR"]},"groups":{"type":"array","items":{"type":"object","properties":{"th":{"type":"number"},"users":{"type":"object","additionalProperties":{"type":"string","enum":["PENDING_AUTHORIZATION","APPROVED","REJECTED","NA"]}}}}}}},"exchangeTxId":{"type":"string","description":"If the transaction originated from an exchange, this is the ID of this transaction at the exchange."},"customerRefId":{"type":"string","description":"The ID for AML providers to associate the owner of funds with transactions."},"amlScreeningResult":{"type":"object","description":"The result of the AML screening.","properties":{"provider":{"type":"string"},"payload":{"type":"object"}}},"extraParameters":{"type":"object","properties":{},"description":"Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n"},"signedMessages":{"type":"object","description":"A list of signed messages returned for raw signing.","properties":{"content":{"type":"string"},"algorithm":{"type":"string","enum":["MPC_ECDSA_SECP256K1","MPC_EDDSA_ED25519"]},"derivationPath":{"type":"array","items":{"type":"number"}},"signature":{"type":"object","properties":{"fullSig":{"type":"string"},"r":{"type":"string"},"s":{"type":"string"},"v":{"type":"number"}}},"publicKey":{"type":"string"}}},"numOfConfirmations":{"type":"number","description":"The number of confirmations of the transaction. The number will increase until the transaction will be considered completed according to the confirmation policy."},"blockInfo":{"type":"object","description":"The block hash and height of the block that this transaction was mined in.\n **Note**: If an outgoing transaction uses the destinations object with more than one value in the array, blockHash is set to null.","properties":{"blockHeight":{"type":"string"},"blockHash":{"type":"string"}}},"index":{"type":"number","description":"For UTXO based assets this is the vOut, for Ethereum based, this is the index of the event of the contract call.\n **Note:** This field is not returned if a transaction uses the `destinations` object with more than one value."},"rewardInfo":{"type":"object","description":"This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.","properties":{"srcRewards":{"type":"string"},"destRewards":{"type":"string"}}},"systemMessages":{"type":"object","properties":{"type":{"type":"string","enum":["WARN","BLOCK"]},"message":{"type":"string","description":"A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.","example":"Slow transaction processing. Outgoing transactions might be stuck."}}},"addressType":{"type":"string","enum":["WHITELISTED","ONE_TIME"]},"requestedAmount":{"description":"The amount requested by the user. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","deprecated":true},"amount":{"description":"If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","deprecated":true},"netAmount":{"description":"The net amount of the transaction, after fee deduction. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","deprecated":true},"amountUSD":{"description":"The USD value of the requested amount. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","nullable":true,"deprecated":true},"serviceFee":{"description":"The total fee deducted by the exchange from the actual requested amount (`serviceFee` = `amount` - `netAmount`). Deprecated - please use the `feeInfo` field for accuracy.","type":"number","deprecated":true},"fee":{"description":"Deprecated - please use the `feeInfo` field for accuracy.","type":"number","deprecated":true},"networkFee":{"description":"The fee paid to the network. Deprecated - please use the `feeInfo` field for accuracy.","type":"number","deprecated":true}}},"description":"Find a specific transaction by Fireblocks transaction ID.\n\nReturns a transaction by ID."},{"method":"get","path":"/transactions/external_tx_id/{externalTxId}/","name":"transactions_external_tx_id_getByExternaltxid","parameters":[{"type":"string","minimum":1,"description":"The external ID of the transaction to return"}],"output":{"type":"object","properties":{"id":{"type":"string","description":"ID of the transaction."},"externalTxId":{"type":"string","description":"Unique transaction ID provided by the user. Fireblocks highly recommends setting an `externalTxId` for every transaction created, to avoid submitting the same transaction twice."},"status":{"type":"string","description":"The primary status of the transaction. For details, see [Primary transaction statuses](https://developers.fireblocks.com/reference/primary-transaction-statuses)."},"subStatus":{"type":"string","description":"See [Transaction substatuses](https://developers.fireblocks.com/reference/transaction-substatuses) for the list of transaction sub statuses."},"txHash":{"type":"string","description":"The hash of the transaction on the blockchain.\n * This parameter exists if at least one of the following conditions is met:\n\n 1. The transaction’s source type is `UNKNOWN`, `WHITELISTED_ADDRESS`, `NETWORK_CONNECTION`, `ONE_TIME_ADDRESS`, `FIAT_ACCOUNT` or `GAS_STATION`.\n\n 2. The transaction’s source type is `VAULT` and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these statuses prior to changing to `FAILED` or `REJECTED`. In some instances, transactions in status `BROADCASTING` will include the txHash as well.\n\n 3. The transaction’s source type is `EXCHANGE_ACCOUNT` and the transaction’s destination type is `VAULT`, and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these status prior to changing to `FAILED`.\n \n\n* In addition, the following conditions must be met:\n\n 1. The asset is a crypto asset (not fiat).\n\n 2. The transaction operation is not RAW or `TYPED_MESSAGE`."},"operation":{"type":"string","enum":["TRANSFER","BURN","CONTRACT_CALL","MINT","RAW","TYPED_MESSAGE","ENABLE_ASSET","STAKE","UNSTAKE","WITHDRAW","REDEEM_FROM_COMPOUND","SUPPLY_TO_COMPOUND"],"description":"* `TRANSFER` - Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n* `ENABLE_ASSET` - Algorand, DigitalBits, Solana, and Stellar require an on-chain transaction to create an asset wallet and enable the deposit address. This transaction is automatically created when adding assets on these blockchains at a vault account.\n* `STAKE` - Assign assets to a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `UNSTAKE` - Remove assets from a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n* `WITHDRAW` - Transfer assets from a dedicated staking vault account to another address. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.\n\n **Note:** Fireblocks will rename this type from `WITHDRAW` to a different type name soon. There will be a 7-day notice regarding the new type name.\n\n* `SUPPLY_TO_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n* `REDEEM_FROM_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.\n"},"note":{"type":"string","description":"Custom note, not sent to the blockchain, that describes the transaction at your Fireblocks workspace."},"assetId":{"type":"string","description":"The ID of the asset to transfer, for `TRANSFER`, `MINT`, `BURN`, `ENABLE_ASSET`,`STAKE` ,`UNSTAKE` or `WITHDRAW` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)","x-fb-entity":"asset"},"source":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"sourceAddress":{"type":"string","description":"For account based assets only, the source address of the transaction.\n**Note:** If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the source address. In any other case, this parameter will be empty."},"tag":{"type":"string","description":"Source address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)."},"destination":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"destinations":{"type":"array","description":"The transaction’s destinations.\n**Note:** In case the transaction is sent to a single destination, the `destination` parameter is used instead of this.","items":{"type":"object","properties":{"destination":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"destinationAddress":{"description":"Address where the asset was transferred."},"destinationAddressDescription":{"description":"Description of the address."},"amount":{"type":"string","description":"The amount to be sent to this destination."},"amountUSD":{"type":"string","description":"The USD value of the requested amount."},"amlScreeningResult":{"type":"object","description":"The result of the AML screening.","properties":{"provider":{"type":"string"},"payload":{"type":"object"}}},"customerRefId":{"description":"The ID for AML providers to associate the owner of funds with transactions."},"authorizationInfo":{"type":"object","description":"The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)","properties":{"allowOperatorAsAuthorizer":{"type":"boolean"},"logic":{"type":"string","enum":["AND","OR"]},"groups":{"type":"array","items":{"type":"object","properties":{"th":{"type":"number"},"users":{"type":"object","additionalProperties":{"type":"string","enum":["PENDING_AUTHORIZATION","APPROVED","REJECTED","NA"]}}}}}}}}}},"destinationAddress":{"type":"string","description":"Address where the asset were transferred.\nNotes:\n - For [Multi destination transactions](https://support.fireblocks.io/hc/en-us/articles/360018447980-Multi-destination-transactions), this parameter will be empty. In this case, you should refer to the destinations field.\n - If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the destination address. In any other case, this parameter will be empty."},"destinationAddressDescription":{"type":"string","description":"Description of the address."},"destinationTag":{"type":"string","description":"Destination address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group)."},"contractCallDecodedData":{"description":"Decoded data for `CONTRACT_CALL` operations. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for setting this parameter's value.","type":"object","properties":{"contractName":{"type":"string"},"functionCalls":{"type":"array","items":{"type":"object"}}}},"amountInfo":{"type":"object","description":"The details of the requested amount to transfer.","properties":{"amount":{"description":"If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount.","type":"string"},"requestedAmount":{"description":"The amount requested by the user.","type":"string"},"netAmount":{"description":"The net amount of the transaction, after fee deduction.","type":"string"},"amountUSD":{"description":"The USD value of the requested amount.","type":"string"}}},"treatAsGrossAmount":{"type":"boolean","description":"For transactions initiated via this Fireblocks workspace, when set to `true`, the fee is deducted from the requested amount.\n\n**Note**: This parameter can only be considered if a transaction's asset is a base asset, such as ETH or MATIC. If the asset can't be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account."},"feeInfo":{"type":"object","description":"Details of the transaction's fee.","properties":{"networkFee":{"description":"The fee paid to the network","type":"string"},"serviceFee":{"description":"The total fee deducted by the exchange from the actual requested amount (serviceFee = amount - netAmount)","type":"string"},"gasPrice":{"type":"string"}}},"feeCurrency":{"type":"string","description":"The asset which was withdrawn to pay the transaction fee, for example ETH for EVM-based blockchains, BTC for Tether Omni."},"networkRecords":{"type":"array","description":"In case a single transaction resulted with multiple transfers, for example a result of a contract call, then this parameter specifies each transfer that took place on the blockchain. In case of a single transfer transaction, this parameter is empty.","items":{"type":"object","properties":{"source":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"destination":{"type":"object","properties":{"type":{"type":"string"},"subType":{"type":"string","description":"In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`."},"id":{"type":"string","description":"The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/get_vault-accounts-paged), [listing exchange account](https://developers.fireblocks.com/reference/get_exchange-accounts), [listing fiat accounts](https://developers.fireblocks.com/reference/get_fiat-accounts), [listing internal wallets](https://developers.fireblocks.com/reference/get_internal-wallets), [listing external wallets](https://developers.fireblocks.com/reference/get_external-wallets), [listing network connections](https://developers.fireblocks.com/reference/get_network-connections). For the other types, this parameter is not needed."},"name":{"type":"string","description":"The name of the peer."},"walletId":{"type":"string","format":"uuid"}}},"txHash":{"type":"string"},"networkFee":{"type":"string"},"assetId":{"type":"string","x-fb-entity":"asset"},"netAmount":{"description":"The net amount of the transaction, after fee deduction","type":"string"},"isDropped":{"type":"boolean"},"type":{"type":"string"},"destinationAddress":{"type":"string"},"sourceAddress":{"type":"string"},"amountUSD":{"type":"string"},"index":{"type":"number"},"rewardInfo":{"type":"object","description":"This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.","properties":{"srcRewards":{"type":"string"},"destRewards":{"type":"string"}}}}}},"createdAt":{"type":"number","description":"The transaction’s creation date and time, in unix timestamp."},"lastUpdated":{"type":"number","description":"The transaction’s last update date and time, in unix timestamp."},"createdBy":{"type":"string","description":"User ID of the initiator of the transaction."},"signedBy":{"type":"array","description":"User ID’s of the signers of the transaction.","items":{"type":"string"}},"rejectedBy":{"type":"string","description":"User ID of the user that rejected the transaction (in case it was rejected)."},"authorizationInfo":{"type":"object","description":"The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)","properties":{"allowOperatorAsAuthorizer":{"type":"boolean"},"logic":{"type":"string","enum":["AND","OR"]},"groups":{"type":"array","items":{"type":"object","properties":{"th":{"type":"number"},"users":{"type":"object","additionalProperties":{"type":"string","enum":["PENDING_AUTHORIZATION","APPROVED","REJECTED","NA"]}}}}}}},"exchangeTxId":{"type":"string","description":"If the transaction originated from an exchange, this is the ID of this transaction at the exchange."},"customerRefId":{"type":"string","description":"The ID for AML providers to associate the owner of funds with transactions."},"amlScreeningResult":{"type":"object","description":"The result of the AML screening.","properties":{"provider":{"type":"string"},"payload":{"type":"object"}}},"extraParameters":{"type":"object","properties":{},"description":"Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n"},"signedMessages":{"type":"object","description":"A list of signed messages returned for raw signing.","properties":{"content":{"type":"string"},"algorithm":{"type":"string","enum":["MPC_ECDSA_SECP256K1","MPC_EDDSA_ED25519"]},"derivationPath":{"type":"array","items":{"type":"number"}},"signature":{"type":"object","properties":{"fullSig":{"type":"string"},"r":{"type":"string"},"s":{"type":"string"},"v":{"type":"number"}}},"publicKey":{"type":"string"}}},"numOfConfirmations":{"type":"number","description":"The number of confirmations of the transaction. The number will increase until the transaction will be considered completed according to the confirmation policy."},"blockInfo":{"type":"object","description":"The block hash and height of the block that this transaction was mined in.\n **Note**: If an outgoing transaction uses the destinations object with more than one value in the array, blockHash is set to null.","properties":{"blockHeight":{"type":"string"},"blockHash":{"type":"string"}}},"index":{"type":"number","description":"For UTXO based assets this is the vOut, for Ethereum based, this is the index of the event of the contract call.\n **Note:** This field is not returned if a transaction uses the `destinations` object with more than one value."},"rewardInfo":{"type":"object","description":"This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.","properties":{"srcRewards":{"type":"string"},"destRewards":{"type":"string"}}},"systemMessages":{"type":"object","properties":{"type":{"type":"string","enum":["WARN","BLOCK"]},"message":{"type":"string","description":"A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.","example":"Slow transaction processing. Outgoing transactions might be stuck."}}},"addressType":{"type":"string","enum":["WHITELISTED","ONE_TIME"]},"requestedAmount":{"description":"The amount requested by the user. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","deprecated":true},"amount":{"description":"If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","deprecated":true},"netAmount":{"description":"The net amount of the transaction, after fee deduction. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","deprecated":true},"amountUSD":{"description":"The USD value of the requested amount. Deprecated - please use the `amountInfo` field for accuracy.","type":"number","nullable":true,"deprecated":true},"serviceFee":{"description":"The total fee deducted by the exchange from the actual requested amount (`serviceFee` = `amount` - `netAmount`). Deprecated - please use the `feeInfo` field for accuracy.","type":"number","deprecated":true},"fee":{"description":"Deprecated - please use the `feeInfo` field for accuracy.","type":"number","deprecated":true},"networkFee":{"description":"The fee paid to the network. Deprecated - please use the `feeInfo` field for accuracy.","type":"number","deprecated":true}}},"description":"Find a specific transaction by external transaction ID.\n\nReturns transaction by external transaction ID."},{"method":"post","path":"/transactions/{txId}/set_confirmation_threshold","name":"transactions_set_confirmation_threshold_postByTxid","parameters":[{"type":"string","minimum":1,"description":"The ID of the transaction"},{"type":"object","properties":{"numOfConfirmations":{"type":"number"}}}],"output":{"type":"object","properties":{"success":{"type":"boolean"},"transactions":{"type":"array","items":{"type":"string"}}}},"description":"Set confirmation threshold by transaction ID.\n\nOverrides the required number of confirmations for transaction completion by transaction ID."},{"method":"post","path":"/transactions/{txId}/drop","name":"transactions_drop_postByTxid","parameters":[{"type":"string","minimum":1,"description":"The ID of the transaction"},{"type":"object","properties":{"txId":{"type":"string"},"feeLevel":{"type":"string"},"gasPrice":{"type":"string"}}}],"output":{"type":"object","properties":{"success":{"type":"boolean"},"transactions":{"type":"array","items":{"type":"string"}}}},"description":"Drop ETH transaction by ID.\n\nDrops a stuck ETH transaction and creates a replacement transaction."},{"method":"post","path":"/transactions/{txId}/cancel","name":"transactions_cancel_postByTxid","parameters":[{"type":"string","minimum":1,"description":"The ID of the transaction to cancel"}],"output":{"type":"object","properties":{"success":{"type":"boolean"}}},"description":"Cancel a transaction.\n\nCancels a transaction by ID."},{"method":"post","path":"/transactions/{txId}/freeze","name":"transactions_freeze_postByTxid","parameters":[{"type":"string","minimum":1,"description":"The ID of the transaction to freeze"}],"output":{"type":"object","properties":{"success":{"type":"boolean"}}},"description":"Freeze a transaction.\n\nFreezes a transaction by ID."},{"method":"post","path":"/transactions/{txId}/unfreeze","name":"transactions_unfreeze_postByTxid","parameters":[{"type":"string","minimum":1,"description":"The ID of the transaction to unfreeze"}],"output":{"type":"object","properties":{"success":{"type":"boolean"}}},"description":"Unfreeze a transaction.\n\nUnfreezes a transaction by ID and makes the transaction available again."},{"method":"post","path":"/txHash/{txHash}/set_confirmation_threshold","name":"txHash_set_confirmation_threshold_postByTxhash","parameters":[{"type":"string","minimum":1,"description":"The TxHash"},{"type":"object","properties":{"numOfConfirmations":{"type":"number"}}}],"output":{"type":"object","properties":{"success":{"type":"boolean"},"transactions":{"type":"array","items":{"type":"string"}}}},"description":"Set confirmation threshold by transaction hash.\n\nOverrides the required number of confirmations for transaction completion by transaction hash."},{"method":"get","path":"/payments/xb-settlements/configs","name":"payments_xb_settlements_configs_get","parameters":[],"output":{"type":"object","properties":{"configurations":{"type":"array","items":{"type":"object","properties":{"configId":{"type":"string","format":"uuid","description":"Cross Bodrder configuraion unique id"},"corridorId":{"type":"string","enum":["MX_US","CO_US","US_MX","US_EU","US_UK"],"description":"- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n"},"name":{"type":"string","description":"The name for the cross-border ettlement configuration"},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"accountId":{"type":"string"},"inputAssetId":{},"outputAssetId":{}},"required":["accountId"]}},"conversionSlippageBasisPoints":{"type":"integer","minimum":0,"maximum":10000,"default":10000,"description":"Slippage configuarion in basis points, the default value is 10%\n"},"createdAt":{"type":"number","description":"The creation time in epoch format."}},"required":["configId","name","corridorId","steps","conversionSlippageBasisPoints","createdAt"]}}},"required":["configurations"]},"description":"Get all the cross-border settlement configurations.
\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"post","path":"/payments/xb-settlements/configs","name":"payments_xb_settlements_configs_post","parameters":[{"type":"object","properties":{"name":{"type":"string","description":"The name for the cross-border settlement configuration"},"corridorId":{"type":"string","enum":["MX_US","CO_US","US_MX","US_EU","US_UK"],"description":"- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n"},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"accountId":{"type":"string"},"inputAssetId":{},"outputAssetId":{}},"required":["accountId"]}},"conversionSlippageBasisPoints":{"type":"integer","minimum":0,"maximum":10000,"default":10000,"description":"Slippage configuarion in basis points, the default value is 10%\n"}},"required":["name","corridorId","steps"]}],"output":{"type":"object","properties":{"configId":{"type":"string","format":"uuid","description":"Cross Bodrder configuraion unique id"},"corridorId":{"type":"string","enum":["MX_US","CO_US","US_MX","US_EU","US_UK"],"description":"- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n"},"name":{"type":"string","description":"The name for the cross-border ettlement configuration"},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"accountId":{"type":"string"},"inputAssetId":{},"outputAssetId":{}},"required":["accountId"]}},"conversionSlippageBasisPoints":{"type":"integer","minimum":0,"maximum":10000,"default":10000,"description":"Slippage configuarion in basis points, the default value is 10%\n"},"createdAt":{"type":"number","description":"The creation time in epoch format."}},"required":["configId","name","corridorId","steps","conversionSlippageBasisPoints","createdAt"]},"description":"Create a new cross-border settlement configuration.\n\nCreate a new cross-border settlement configuration.
Configurations define the default assets, on-ramps, and off-ramps to use for the cross-border settlement.
\nA configuration must contain at least two steps - `ON_RAMP` and `VAULT_ACCOUNT`.
\nAll other steps (e.g., `OFF_RAMP`, `FIAT_DESTINATION`, etc.) are optional.
\nEvery step must include the `accountId` to be used, while `inputAssetId` and `outputAssetId` are optional. \nIf those are not provided, a default value will be used from the Corridor Settings.
\nIf the inputAssetId or the outputAssetId is provided for one of the objects, all assets in the objects must be consistent. For example, if the output asset of ON_RAMP is XLM_USDC_5F3T, then the input asset of the VAULT_ACCOUNT must also be XLM_USDC_5F3T..
\nYou can set a slippage amount for your configuration. Slippage is defined by basis points (bps). This value can be overloaded on execution. If you do not configure a slippage amount, the default slippage of 10000 bps (10%) is used.
\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"get","path":"/payments/xb-settlements/configs/{configId}","name":"payments_xb_settlements_configs_getByConfigid","parameters":[{"type":"string","description":"The cross-border settlement configuration ID."}],"output":{"type":"object","properties":{"configId":{"type":"string","format":"uuid","description":"Cross Bodrder configuraion unique id"},"corridorId":{"type":"string","enum":["MX_US","CO_US","US_MX","US_EU","US_UK"],"description":"- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n"},"name":{"type":"string","description":"The name for the cross-border ettlement configuration"},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"accountId":{"type":"string"},"inputAssetId":{},"outputAssetId":{}},"required":["accountId"]}},"conversionSlippageBasisPoints":{"type":"integer","minimum":0,"maximum":10000,"default":10000,"description":"Slippage configuarion in basis points, the default value is 10%\n"},"createdAt":{"type":"number","description":"The creation time in epoch format."}},"required":["configId","name","corridorId","steps","conversionSlippageBasisPoints","createdAt"]},"description":"Get a specific cross-border settlement configuration.
\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"put","path":"/payments/xb-settlements/configs/{configId}","name":"payments_xb_settlements_configs_putByConfigid","parameters":[{"type":"string","description":"The cross-border settlement configuration ID."},{"type":"object","properties":{"name":{"type":"string","description":"The name for the cross-border settlement configuration"},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"accountId":{"type":"string"},"inputAssetId":{},"outputAssetId":{}},"required":["accountId"]}},"conversionSlippageBasisPoints":{"type":"integer","minimum":0,"maximum":10000,"default":10000,"description":"Slippage configuarion in basis points, the default value is 10%\n"}},"required":["name","steps"]}],"output":{"type":"object","properties":{"configId":{"type":"string","format":"uuid","description":"Cross Bodrder configuraion unique id"},"corridorId":{"type":"string","enum":["MX_US","CO_US","US_MX","US_EU","US_UK"],"description":"- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n"},"name":{"type":"string","description":"The name for the cross-border ettlement configuration"},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"accountId":{"type":"string"},"inputAssetId":{},"outputAssetId":{}},"required":["accountId"]}},"conversionSlippageBasisPoints":{"type":"integer","minimum":0,"maximum":10000,"default":10000,"description":"Slippage configuarion in basis points, the default value is 10%\n"},"createdAt":{"type":"number","description":"The creation time in epoch format."}},"required":["configId","name","corridorId","steps","conversionSlippageBasisPoints","createdAt"]},"description":"Edit a cross-border settlement configuration.\nEditing a configuration does not affect previously executed flows that used the configuration.\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"delete","path":"/payments/xb-settlements/configs/{configId}","name":"payments_xb_settlements_configs_eraseByConfigid","parameters":[{"type":"string","description":"The cross-border settlement configuration ID."}],"output":{"type":"object","properties":{"configId":{"type":"string","format":"uuid","description":"Cross Bodrder configuraion unique id"},"corridorId":{"type":"string","enum":["MX_US","CO_US","US_MX","US_EU","US_UK"],"description":"- MX_US : Mexico (MXN) to USA (USD)\n- CO_US : Colombia (COP) to USA (USD)\n- US_MX : USA (USD) to Mexico (MXN)\n- US_EU : USA (USD) to Europe Union (EUR)\n- US_UK : USA (USD) to United Kingdon (GBP)\n"},"name":{"type":"string","description":"The name for the cross-border ettlement configuration"},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"accountId":{"type":"string"},"inputAssetId":{},"outputAssetId":{}},"required":["accountId"]}},"conversionSlippageBasisPoints":{"type":"integer","minimum":0,"maximum":10000,"default":10000,"description":"Slippage configuarion in basis points, the default value is 10%\n"},"createdAt":{"type":"number","description":"The creation time in epoch format."}},"required":["configId","name","corridorId","steps","conversionSlippageBasisPoints","createdAt"]},"description":"Delete a cross-border settlement configuration.\nThis does not delete or remove previously executed flows that used this configuration.\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"post","path":"/payments/xb-settlements/flows","name":"payments_xb_settlements_flows_post","parameters":[{"type":"object","properties":{"configId":{"type":"string","format":"uuid","description":"Cross Bodrder configuraion unique id"},"amount":{"type":"string","description":"The amount to transfer in this cross-border flow. The type of asset is defined by the cross-border settlement configuration."}},"required":["configId","amount"]}],"output":{"type":"object","properties":{"flowId":{"type":"string","description":"The unique id for the cross-border flow."},"configId":{"type":"string","format":"uuid","description":"Cross Bodrder configuraion unique id"},"conversionRate":{"type":"string","description":"The conversion rate received from the on-ramp or off-ramp."},"inputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"estimatedOutputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"totalEstimatedFee":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"totalEstimatedTime":{"type":"number","description":"The total *estimated* time for executing the cross-border flow."},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"accountId":{"type":"string"},"inputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"outputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"estimatedFeeAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"estimatedTime":{"type":"number","description":"The estimated time for executing the step."},"isSignRequired":{"type":"boolean","description":"Whether or not signing is required for executing the step."}},"required":["accountId","inputAmount","outputAmount","estimatedFeeAmount","estimatedTime","isSignRequired"]}}},"required":["flowId","configId","steps","inputAmount","estimatedOutputAmount","totalEstimatedFee","totalEstimatedTime","conversionRate"]},"description":"Create a new cross-border settlement flow.\n\nCreate a cross-border flow (based on a cross-border configuration) with an amount to transfer. \nThe assetId is defined by the cross-border configuration.\nCreating a flow triggers a calculation of the flow estimations, including FX rates, times, and fees based on the amount provided.\nCreating a cross-border flow will not execute the flow.\n\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"get","path":"/payments/xb-settlements/flows/{flowId}","name":"payments_xb_settlements_flows_getByFlowid","parameters":[{"type":"string","description":"The cross-border settlement flow ID."}],"output":{"type":"object","properties":{"preview":{"type":"object","properties":{"flowId":{"type":"string","description":"The unique id for the cross-border flow."},"configId":{"type":"string","format":"uuid","description":"Cross Bodrder configuraion unique id"},"conversionRate":{"type":"string","description":"The conversion rate received from the on-ramp or off-ramp."},"inputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"estimatedOutputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"totalEstimatedFee":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"totalEstimatedTime":{"type":"number","description":"The total *estimated* time for executing the cross-border flow."},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"accountId":{"type":"string"},"inputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"outputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"estimatedFeeAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"estimatedTime":{"type":"number","description":"The estimated time for executing the step."},"isSignRequired":{"type":"boolean","description":"Whether or not signing is required for executing the step."}},"required":["accountId","inputAmount","outputAmount","estimatedFeeAmount","estimatedTime","isSignRequired"]}}},"required":["flowId","configId","steps","inputAmount","estimatedOutputAmount","totalEstimatedFee","totalEstimatedTime","conversionRate"]},"execution":{"type":"object","properties":{"flowId":{"type":"string","description":"The unique id for the cross-border flow."},"configId":{"type":"string","format":"uuid","description":"Cross Bodrder configuraion unique id"},"inputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"outputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"totalFee":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"initiatedAt":{"type":"number","description":"The time the cross-border flow executed in epoch format."},"initiatedBy":{"description":"The id of the user which launched the flow","type":"string"},"state":{"type":"string","enum":["NOT_LAUNCHED","PROCESSING","COMPLETED","FAILED"]},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"id":{"type":"string","description":"A unique id for the step execution"},"accountId":{"type":"string"},"status":{"type":"string","enum":["NOT_STARTED","PROCESSING","COMPLETED","FAILED"]},"inputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"outputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"fee":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"startedAt":{"type":"number","description":"The step execution start time in epoch format."},"completedAt":{"type":"number","description":"The step execution end time in epoch format."},"isSignRequired":{"type":"boolean","description":"Whether or not signing is required for executing the step."}},"required":["id","accountId","status","inputAmount","isSignRequired"]}},"selectedConversionSlippage":{"type":"object","description":"Indicates the selected slippage used during the flow since override logic may have taken place.","properties":{"basisPoints":{"type":"number"},"reason":{"type":"string","enum":["DEFAULT","CONFIG","FLOW"]}},"required":["basisPoints","reason"]}},"required":["flowId","configId","steps","inputAmount","outputAmount","totalFee","initiatedAt","initiatedBy","state","selectedConversionSlippage"]}}},"description":"Get specific cross-border settlement flow details.\n\nGets details for a specific cross-border settlement flow\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"post","path":"/payments/xb-settlements/flows/{flowId}/actions/execute","name":"payments_xb_settlements_flows_actions_execute_postByFlowid","parameters":[{"type":"string","description":"The cross-border settlement flow ID."},{"type":"object","properties":{"conversionSlippageBasisPoints":{"type":"integer","minimum":0,"maximum":10000,"default":10000,"description":"Slippage configuarion in basis points, the default value is 10%\n"}}}],"output":{"type":"object","properties":{"flowId":{"type":"string","description":"The unique id for the cross-border flow."},"configId":{"type":"string","format":"uuid","description":"Cross Bodrder configuraion unique id"},"inputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"outputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"totalFee":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"initiatedAt":{"type":"number","description":"The time the cross-border flow executed in epoch format."},"initiatedBy":{"description":"The id of the user which launched the flow","type":"string"},"state":{"type":"string","enum":["NOT_LAUNCHED","PROCESSING","COMPLETED","FAILED"]},"steps":{"type":"object","properties":{"stepType":{"type":"string","enum":["ON_RAMP","VAULT_ACCOUNT","OFF_RAMP","FIAT_DESTINATION"],"description":"- ON_RAMP : A service that allows for the exchange of fiat currencies for cryptocurrencies. An OnRamp input value will always be fiat and output value crypto asset.\n- VAULT_ACCOUNT : Fireblocks Vault account\n- OFF_RAMP : A service that allows for the exchange of cryptocurrencies for fiat. An OffRamp input value will always be a crypto asset and output value be fiat.\n- FIAT_DESTINATION : Fiat account\n"}},"additionalProperties":{"type":"object","properties":{"id":{"type":"string","description":"A unique id for the step execution"},"accountId":{"type":"string"},"status":{"type":"string","enum":["NOT_STARTED","PROCESSING","COMPLETED","FAILED"]},"inputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"outputAmount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"fee":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{}},"required":["amount"]},"startedAt":{"type":"number","description":"The step execution start time in epoch format."},"completedAt":{"type":"number","description":"The step execution end time in epoch format."},"isSignRequired":{"type":"boolean","description":"Whether or not signing is required for executing the step."}},"required":["id","accountId","status","inputAmount","isSignRequired"]}},"selectedConversionSlippage":{"type":"object","description":"Indicates the selected slippage used during the flow since override logic may have taken place.","properties":{"basisPoints":{"type":"number"},"reason":{"type":"string","enum":["DEFAULT","CONFIG","FLOW"]}},"required":["basisPoints","reason"]}},"required":["flowId","configId","steps","inputAmount","outputAmount","totalFee","initiatedAt","initiatedBy","state","selectedConversionSlippage"]},"description":"Execute cross-border settlement flow.\n\nSend a payment flow with 'flowId' for execution.\nIf a differet slippage configuraion is needed for this execution than configured in the flow configuration, the request body must define the desired slippage configuration for this execution.\n\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoint includes APIs available only for customers with the Payments Engine enabled on their accounts.\nThese endpoints are currently in beta and might be subject to changes.\nIf you want to learn more about the Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"post","path":"/payments/payout","name":"payments_payout_post","parameters":[{"type":"object","properties":{"paymentAccount":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["VAULT_ACCOUNT","EXCHANGE_ACCOUNT","FIAT_ACCOUNT"]}},"required":["id","type"]},"instructionSet":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"payeeAccount":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["VAULT_ACCOUNT","EXCHANGE_ACCOUNT","INTERNAL_WALLET","EXTERNAL_WALLET","NETWORK_CONNECTION","FIAT_ACCOUNT"],"description":"- VAULT_ACCOUNT \ta native Fireblocks vault account\n- EXCHANGE_ACCOUNT \ta third-party exchange account\n- INTERNAL_WALLET \ta whitelisted address marked as internal to the workspace/organization\n- EXTERNAL_WALLET\ta whitelisted address marked as external\n- NETWORK_CONNECTION\ta member of the Fireblocks network\n- FIAT_ACCOUNT\ta third-party account of a fiat bank (Signature, BCB, etc)\n"}},"required":["id","type"]},"amount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{"type":"string"}},"required":["amount","assetId"]}},"required":["amount","payeeAccount"]}}},"required":["paymentAccount","instructionSet"]}],"output":{"type":"object","properties":{"payoutId":{"type":"string"},"paymentAccount":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["VAULT_ACCOUNT","EXCHANGE_ACCOUNT","FIAT_ACCOUNT"]}}},"createdAt":{"type":"number"},"state":{"type":"string","enum":["CREATED","FILE_FOUND","REQUESTED","TRANSLATED","PROCESSING","SUBMITTED","FINALIZED","INSUFFICIENT_BALANCE","FAILED"],"description":"- CREATED - payout instruction set created with all its details\n- FILE_FOUND - new file found in the FTP\n- REQUESTED - payout requested with all its details\n- TRANSLATED - payout instruction account IDs identified and translated\n- PROCESSING - payout instruction set executed and is processing\n- SUBMITTED - transactions submitted for payout instructions\n- FINALIZED - payout finished processing, all transactions processed successfully\n- INSUFFICIENT_BALANCE - insufficient balance in the payment account (can be a temporary state)\n- FAILED - one or more of the payout instructions failed\n"},"status":{"type":"string","enum":["REGISTERED","VERIFYING","IN_PROGRESS","DONE","INSUFFICIENT_BALANCE","FAILED"],"description":"- REQUESTED\tpayout requested with all its details\n- VERIFIED\tpayout instruction set details were verified\n- PROCESSING\tpayout instruction set executed and is processing\n- FINALIZED\tpayout done (all payout instructions completed successfully)\n- INSUFFICIENT_BALANCE\tinsufficient balance in the payment account (can be a temporary state)\n- FAILED\tone or more of the payout instructions failed\n"},"reasonOfFailure":{"type":"string","description":"
    \n
  • INSUFFICIENT_BALANCE
  • \n
  • SOURCE_TRANSLATION
  • \n
  • SOURCE_NOT_UNIQUE
  • \n
  • SOURCE_NOT_FOUND
  • \n
  • SOURCE_TYPE_NOT_SUPPORTED
  • \n
  • EMPTY_SOURCE
  • \n
  • DESTINATION_TRANSLATION
  • \n
  • DESTINATION_NOT_UNIQUE
  • \n
  • DESTINATION_NOT_FOUND
  • \n
  • EMPTY_DESTINATION
  • \n
  • PARSING
  • \n
  • UNKNOWN
  • \n
  • FIREBLOCKS_CLIENT
  • \n
  • TRANSACTION_SUBMISSION
  • \n
\n"},"initMethod":{"type":"string","enum":["FILE","API"]},"instructionSet":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"payeeAccount":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["VAULT_ACCOUNT","EXCHANGE_ACCOUNT","INTERNAL_WALLET","EXTERNAL_WALLET","NETWORK_CONNECTION","FIAT_ACCOUNT"],"description":"- VAULT_ACCOUNT \ta native Fireblocks vault account\n- EXCHANGE_ACCOUNT \ta third-party exchange account\n- INTERNAL_WALLET \ta whitelisted address marked as internal to the workspace/organization\n- EXTERNAL_WALLET\ta whitelisted address marked as external\n- NETWORK_CONNECTION\ta member of the Fireblocks network\n- FIAT_ACCOUNT\ta third-party account of a fiat bank (Signature, BCB, etc)\n"}}},"amount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{"type":"string"}},"required":["amount","assetId"]},"state":{"type":"string","enum":["NOT_STARTED","TRANSACTION_SENT","COMPLETED","FAILED","TRANSLATION_ERROR","SKIPPED"],"description":"- NOT_STARTED\t- waiting to start\n- TRANSACTION_SENT - an underlying transaction was sent\n- COMPLETED\t- completed successfully\n- FAILED - failed\n- TRANSLATION_ERROR -lookup of the destination failed (due to changes in the underlying whitelisted external wallet or similar)\n- SKIPPED- no transaction(s) created for this instruction\n"},"transactions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["SUBMITTED","QUEUED","PENDING_AUTHORIZATION","PENDING_SIGNATURE","BROADCASTING","PENDING_3RD_PARTY_MANUAL_APPROVAL","PENDING_3RD_PARTY","PENDING","CONFIRMING","CONFIRMED","COMPLETED","PARTIALLY_COMPLETED","PENDING_AML_SCREENING","CANCELLING","CANCELLED","REJECTED","BLOCKED","FAILED","TIMEOUT"]},"timestamp":{"type":"number","format":"date-time"},"instructionId":{"type":"string"}},"required":["id","state"]}}},"required":["amount","payeeAccount","state","transactions"]}},"reportUrl":{"type":"string"}},"required":["payoutId","createdAt","state","status","paymentAccount","instructionSet"]},"description":"Create a payout instruction set.\n\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoints include APIs available only for customers with Payments Engine enabled on their accounts.
\n
These endpoints are currently in beta and might be subject to changes.
\n
If you want to learn more about Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or email CSM@fireblocks.com.
\n
Create a payout instruction set.
\nA payout instruction set is a set of instructions for distributing payments from a single payment account to a list of payee accounts.
\nThe instruction set defines:
\n
    \n
  • the payment account and its account type (vault, exchange, or fiat).
  • \n
  • the account type (vault account, exchange account, whitelisted address, network connection, fiat account, or merchant account), the amount, and the asset of payment for each payee account.
  • \n
\n"},{"method":"post","path":"/payments/payout/{payoutId}/actions/execute","name":"payments_payout_actions_execute_postByPayoutid","parameters":[{"type":"string","description":"the payout id received from the creation of the payout instruction set"}],"output":{"type":"object","properties":{"payoutId":{"type":"string"}},"required":["payoutId"]},"description":"Execute a payout instruction set.\n\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoints include APIs available only for customers with Payments Engine enabled on their accounts.
\n
These endpoints are currently in beta and might be subject to changes.
\n
If you want to learn more about Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or email CSM@fireblocks.com.
\n
Execute a payout instruction set.
\n
The instruction set will be verified and executed.
\nSource locking
\nIf you are executing a payout instruction set from a payment account with an already active payout the active payout will complete before the new payout instruction set can be executed.
\nYou cannot execute the same payout instruction set more than once.\n"},{"method":"get","path":"/payments/payout/{payoutId}","name":"payments_payout_getByPayoutid","parameters":[{"type":"string","description":"the payout id received from the creation of the payout instruction set"}],"output":{"type":"object","properties":{"payoutId":{"type":"string"},"paymentAccount":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["VAULT_ACCOUNT","EXCHANGE_ACCOUNT","FIAT_ACCOUNT"]}}},"createdAt":{"type":"number"},"state":{"type":"string","enum":["CREATED","FILE_FOUND","REQUESTED","TRANSLATED","PROCESSING","SUBMITTED","FINALIZED","INSUFFICIENT_BALANCE","FAILED"],"description":"- CREATED - payout instruction set created with all its details\n- FILE_FOUND - new file found in the FTP\n- REQUESTED - payout requested with all its details\n- TRANSLATED - payout instruction account IDs identified and translated\n- PROCESSING - payout instruction set executed and is processing\n- SUBMITTED - transactions submitted for payout instructions\n- FINALIZED - payout finished processing, all transactions processed successfully\n- INSUFFICIENT_BALANCE - insufficient balance in the payment account (can be a temporary state)\n- FAILED - one or more of the payout instructions failed\n"},"status":{"type":"string","enum":["REGISTERED","VERIFYING","IN_PROGRESS","DONE","INSUFFICIENT_BALANCE","FAILED"],"description":"- REQUESTED\tpayout requested with all its details\n- VERIFIED\tpayout instruction set details were verified\n- PROCESSING\tpayout instruction set executed and is processing\n- FINALIZED\tpayout done (all payout instructions completed successfully)\n- INSUFFICIENT_BALANCE\tinsufficient balance in the payment account (can be a temporary state)\n- FAILED\tone or more of the payout instructions failed\n"},"reasonOfFailure":{"type":"string","description":"
    \n
  • INSUFFICIENT_BALANCE
  • \n
  • SOURCE_TRANSLATION
  • \n
  • SOURCE_NOT_UNIQUE
  • \n
  • SOURCE_NOT_FOUND
  • \n
  • SOURCE_TYPE_NOT_SUPPORTED
  • \n
  • EMPTY_SOURCE
  • \n
  • DESTINATION_TRANSLATION
  • \n
  • DESTINATION_NOT_UNIQUE
  • \n
  • DESTINATION_NOT_FOUND
  • \n
  • EMPTY_DESTINATION
  • \n
  • PARSING
  • \n
  • UNKNOWN
  • \n
  • FIREBLOCKS_CLIENT
  • \n
  • TRANSACTION_SUBMISSION
  • \n
\n"},"initMethod":{"type":"string","enum":["FILE","API"]},"instructionSet":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"payeeAccount":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["VAULT_ACCOUNT","EXCHANGE_ACCOUNT","INTERNAL_WALLET","EXTERNAL_WALLET","NETWORK_CONNECTION","FIAT_ACCOUNT"],"description":"- VAULT_ACCOUNT \ta native Fireblocks vault account\n- EXCHANGE_ACCOUNT \ta third-party exchange account\n- INTERNAL_WALLET \ta whitelisted address marked as internal to the workspace/organization\n- EXTERNAL_WALLET\ta whitelisted address marked as external\n- NETWORK_CONNECTION\ta member of the Fireblocks network\n- FIAT_ACCOUNT\ta third-party account of a fiat bank (Signature, BCB, etc)\n"}}},"amount":{"type":"object","properties":{"amount":{"type":"string"},"assetId":{"type":"string"}},"required":["amount","assetId"]},"state":{"type":"string","enum":["NOT_STARTED","TRANSACTION_SENT","COMPLETED","FAILED","TRANSLATION_ERROR","SKIPPED"],"description":"- NOT_STARTED\t- waiting to start\n- TRANSACTION_SENT - an underlying transaction was sent\n- COMPLETED\t- completed successfully\n- FAILED - failed\n- TRANSLATION_ERROR -lookup of the destination failed (due to changes in the underlying whitelisted external wallet or similar)\n- SKIPPED- no transaction(s) created for this instruction\n"},"transactions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["SUBMITTED","QUEUED","PENDING_AUTHORIZATION","PENDING_SIGNATURE","BROADCASTING","PENDING_3RD_PARTY_MANUAL_APPROVAL","PENDING_3RD_PARTY","PENDING","CONFIRMING","CONFIRMED","COMPLETED","PARTIALLY_COMPLETED","PENDING_AML_SCREENING","CANCELLING","CANCELLED","REJECTED","BLOCKED","FAILED","TIMEOUT"]},"timestamp":{"type":"number","format":"date-time"},"instructionId":{"type":"string"}},"required":["id","state"]}}},"required":["amount","payeeAccount","state","transactions"]}},"reportUrl":{"type":"string"}},"required":["payoutId","createdAt","state","status","paymentAccount","instructionSet"]},"description":"Get the status of a payout instruction set.\n\n**Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoints include APIs available only for customers with Payments Engine enabled on their accounts.
\n
These endpoints are currently in beta and might be subject to changes.
\n
If you want to learn more about Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or email CSM@fireblocks.com.
\n"},{"method":"get","path":"/gas_station","name":"gas_station_get","parameters":[],"output":{"type":"object","properties":{"balance":{"type":"object"},"configuration":{"type":"object","properties":{"gasThreshold":{"type":"string"},"gasCap":{"type":"string"},"maxGasPrice":{"type":"string"}}}},"required":["low","medium","high"]},"description":"Get gas station settings.\n\nReturns gas station settings and ETH balance."},{"method":"get","path":"/gas_station/{assetId}","name":"gas_station_getByAssetid","parameters":[{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"}],"output":{"type":"object","properties":{"balance":{"type":"object"},"configuration":{"type":"object","properties":{"gasThreshold":{"type":"string"},"gasCap":{"type":"string"},"maxGasPrice":{"type":"string"}}}},"required":["low","medium","high"]},"description":"Get gas station settings by asset.\n\nReturns gas station settings and balances for a requested asset."},{"method":"put","path":"/gas_station/configuration","name":"gas_station_configuration_put","parameters":[{"type":"object","properties":{"gasThreshold":{"type":"string"},"gasCap":{"type":"string"},"maxGasPrice":{"type":"string"}}}],"description":"Edit gas station settings.\n\nConfigures gas station settings for ETH."},{"method":"put","path":"/gas_station/configuration/{assetId}","name":"gas_station_configuration_putByAssetid","parameters":[{"type":"string","x-fb-entity":"asset","description":"The ID of the asset"},{"type":"object","properties":{"gasThreshold":{"type":"string"},"gasCap":{"type":"string"},"maxGasPrice":{"type":"string"}}}],"description":"Edit gas station settings for an asset.\n\nConfigures gas station settings for a requested asset."},{"method":"get","path":"/users","name":"users_get","parameters":[],"output":{"type":"object","properties":{"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"role":{"type":"string"},"email":{"type":"string"},"enabled":{"type":"boolean"}}}}}},"description":"List users.\n\nList all users for the workspace.\n\nPlease note that this endpoint is available only for API keys with Admin permissions.\n"},{"method":"get","path":"/audits","name":"audits_get","parameters":[{"type":"object","properties":{},"required":[]}],"description":"Get audit logs"},{"method":"post","path":"/off_exchange/add","name":"off_exchange_add_post","parameters":[{"type":"object","properties":{"transactionRequest":{"type":"object","properties":{"operation":{"type":"string","enum":["TRANSFER","BURN","CONTRACT_CALL","MINT","RAW","TYPED_MESSAGE"],"description":"* `TRANSFER` - The default value for an operation. Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n"},"note":{"type":"string","description":"Custom note, not sent to the blockchain, to describe the transaction at your Fireblocks workspace.","example":"Ticket 123"},"externalTxId":{"type":"string","description":"An optional but highly recommended parameter. Fireblocks will reject future transactions with same ID. \n \nYou should set this to a unique ID representing the transaction, to avoid submitting the same transaction twice. This helps with cases where submitting the transaction responds with an error code due to Internet interruptions, but the transaction was actually sent and processed. To validate whether a transaction has been processed, [Find a specific transaction by external transaction ID](https://developers.fireblocks.com/reference/get_transactions-external-tx-id-externaltxid).\n \nThere is no specific format required for this parameter.","example":"00000000-0000-0000-0000-000000000000"},"assetId":{"type":"string","description":"The ID of the asset to transfer, for `TRANSFER`, `MINT` or `BURN` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)","x-fb-entity":"asset","example":"ETH"},"source":{"type":"object","properties":{"type":{"type":"string","enum":["VAULT_ACCOUNT","EXCHANGE_ACCOUNT","INTERNAL_WALLET","EXTERNAL_WALLET","NETWORK_CONNECTION","FIAT_ACCOUNT","COMPOUND","GAS_STATION","ONE_TIME_ADDRESS","UNKNOWN","END_USER_WALLET"]},"subType":{"type":"string","enum":["BINANCE","BINANCEUS","BITFINEX","BITHUMB","BITMEX","BITSO","BITSTAMP","BITTREX","BLINC","BYBIT","CIRCLE","COINBASEEXCHANGE","COINBASEPRO","COINMETRO","COINSPRO","CRYPTOCOM","DERIBIT","GEMINI","HITBTC","HUOBI","INDEPENDENTRESERVE","KORBIT","KRAKEN","KRAKENINTL","KUCOIN","LIQUID","OKCOIN","OKEX","PAXOS","POLONIEX","External","Internal"]},"id":{"type":"string"},"name":{"type":"string"},"walletId":{"type":"string","format":"uuid"}},"required":["type"]},"destination":{},"destinations":{"type":"array","description":"For UTXO based blockchains, you can send a single transaction to multiple destinations.","items":{"type":"object","properties":{"amount":{"type":"string"},"destination":{}}}},"amount":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"0.02"},{"type":"number","description":"Number (deprecated)","example":0.02}],"description":"For `TRANSFER` operations, the requested amount to transfer, in the asset’s unit. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"treatAsGrossAmount":{"type":"boolean","description":"\"When set to `true`, the fee will be deducted from the requested amount.\"\n\n**Note**: This parameter can only be considered if a transaction’s asset is a base asset, such as ETH or MATIC. If the asset can’t be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account."},"forceSweep":{"type":"boolean","description":"For Polkadot, Kusama and Westend transactions only. When set to true, Fireblocks will empty the asset wallet.\n\n **Note:** If set to true when the source account is exactly 1 DOT, the transaction will fail. Any amount more or less than 1 DOT succeeds. This is a Polkadot blockchain limitation."},"feeLevel":{"type":"string","enum":["LOW","MEDIUM","HIGH"],"description":"For UTXO or EVM-based blockchains only. Defines the blockchain fee level which will be payed for the transaction. Alternatively, specific fee estimation parameters exist below."},"fee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For UTXO-based blockchains, the fee per bytes in the asset’s smallest unit (Satoshi, Latoshi, etc.). For Ripple, the fee for the transaction. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"priorityFee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"2"},{"type":"number","description":"Number (deprecated)","example":2}],"description":"For Ethereum-based blockchains only, the fee for EIP-1559 transaction pricing mechanism. Value is in Gwei. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"failOnLowFee":{"type":"boolean","description":"When set to `true`, in case the current `MEDIUM` fee level is higher than the one specified in the transaction, the transaction will fail to avoid getting stuck with no confirmations."},"maxFee":{"description":"The maximum fee (gas price or fee per byte) that should be payed for the transaction. In case the current value of the requested `feeLevel` is higher than this requested maximum fee. Represented by a numeric string for accurate precision.","type":"string","example":"120"},"gasLimit":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"21000"},{"type":"number","description":"Number (deprecated)","example":21000}],"description":"For EVM-based blockchains only. Units of gas required to process the transaction. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"gasPrice":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For non-EIP-1559, EVM-based transactions. Price per gas unit (in Ethereum this is specified in Gwei). Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"networkFee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For EVM-based blockchains only. The total transaction fee in the blockchain’s largest unit. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated. - The transaction blockchain fee.\n- For Ethereum, you can't pass gasPrice, gasLimit and networkFee all together.\n- A numeric value representation is required."},"replaceTxByHash":{"type":"string","description":"For EVM-based blockchains only. In case a transaction is stuck, specify the hash of the stuck transaction to replace it by this transaction with a higher fee, or to replace it with this transaction with a zero fee and drop it from the blockchain.","example":"00000000-0000-0000-0000-000000000000"},"extraParameters":{"type":"object","properties":{},"description":"Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n"},"customerRefId":{"type":"string","description":"The ID for AML providers to associate the owner of funds with transactions.","example":"abcdef"},"autoStaking":{"type":"boolean","description":"This feature is no longer supported."},"networkStaking":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"This feature is no longer supported."},"cpuStaking":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"This feature is no longer supported."}}},"isSrcCollateral":{"type":"boolean","description":"optional"}}}],"output":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the transaction."},"status":{"type":"string","description":"The primary status of the transaction. For details, see [Primary transaction statuses.] (https://developers.fireblocks.com/reference/primary-transaction-statuses)"},"systemMessages":{"type":"object","properties":{"type":{"type":"string","enum":["WARN","BLOCK"]},"message":{"type":"string","description":"A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.","example":"Slow transaction processing. Outgoing transactions might be stuck."}}}}},"description":"add collateral, create deposit request"},{"method":"post","path":"/off_exchange/remove","name":"off_exchange_remove_post","parameters":[{"type":"object","properties":{"transactionRequest":{"type":"object","properties":{"operation":{"type":"string","enum":["TRANSFER","BURN","CONTRACT_CALL","MINT","RAW","TYPED_MESSAGE"],"description":"* `TRANSFER` - The default value for an operation. Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.\n* `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.\n* `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n* `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).\n* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)\n"},"note":{"type":"string","description":"Custom note, not sent to the blockchain, to describe the transaction at your Fireblocks workspace.","example":"Ticket 123"},"externalTxId":{"type":"string","description":"An optional but highly recommended parameter. Fireblocks will reject future transactions with same ID. \n \nYou should set this to a unique ID representing the transaction, to avoid submitting the same transaction twice. This helps with cases where submitting the transaction responds with an error code due to Internet interruptions, but the transaction was actually sent and processed. To validate whether a transaction has been processed, [Find a specific transaction by external transaction ID](https://developers.fireblocks.com/reference/get_transactions-external-tx-id-externaltxid).\n \nThere is no specific format required for this parameter.","example":"00000000-0000-0000-0000-000000000000"},"assetId":{"type":"string","description":"The ID of the asset to transfer, for `TRANSFER`, `MINT` or `BURN` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)","x-fb-entity":"asset","example":"ETH"},"source":{"type":"object","properties":{"type":{"type":"string","enum":["VAULT_ACCOUNT","EXCHANGE_ACCOUNT","INTERNAL_WALLET","EXTERNAL_WALLET","NETWORK_CONNECTION","FIAT_ACCOUNT","COMPOUND","GAS_STATION","ONE_TIME_ADDRESS","UNKNOWN","END_USER_WALLET"]},"subType":{"type":"string","enum":["BINANCE","BINANCEUS","BITFINEX","BITHUMB","BITMEX","BITSO","BITSTAMP","BITTREX","BLINC","BYBIT","CIRCLE","COINBASEEXCHANGE","COINBASEPRO","COINMETRO","COINSPRO","CRYPTOCOM","DERIBIT","GEMINI","HITBTC","HUOBI","INDEPENDENTRESERVE","KORBIT","KRAKEN","KRAKENINTL","KUCOIN","LIQUID","OKCOIN","OKEX","PAXOS","POLONIEX","External","Internal"]},"id":{"type":"string"},"name":{"type":"string"},"walletId":{"type":"string","format":"uuid"}},"required":["type"]},"destination":{},"destinations":{"type":"array","description":"For UTXO based blockchains, you can send a single transaction to multiple destinations.","items":{"type":"object","properties":{"amount":{"type":"string"},"destination":{}}}},"amount":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"0.02"},{"type":"number","description":"Number (deprecated)","example":0.02}],"description":"For `TRANSFER` operations, the requested amount to transfer, in the asset’s unit. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"treatAsGrossAmount":{"type":"boolean","description":"\"When set to `true`, the fee will be deducted from the requested amount.\"\n\n**Note**: This parameter can only be considered if a transaction’s asset is a base asset, such as ETH or MATIC. If the asset can’t be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account."},"forceSweep":{"type":"boolean","description":"For Polkadot, Kusama and Westend transactions only. When set to true, Fireblocks will empty the asset wallet.\n\n **Note:** If set to true when the source account is exactly 1 DOT, the transaction will fail. Any amount more or less than 1 DOT succeeds. This is a Polkadot blockchain limitation."},"feeLevel":{"type":"string","enum":["LOW","MEDIUM","HIGH"],"description":"For UTXO or EVM-based blockchains only. Defines the blockchain fee level which will be payed for the transaction. Alternatively, specific fee estimation parameters exist below."},"fee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For UTXO-based blockchains, the fee per bytes in the asset’s smallest unit (Satoshi, Latoshi, etc.). For Ripple, the fee for the transaction. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"priorityFee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"2"},{"type":"number","description":"Number (deprecated)","example":2}],"description":"For Ethereum-based blockchains only, the fee for EIP-1559 transaction pricing mechanism. Value is in Gwei. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"failOnLowFee":{"type":"boolean","description":"When set to `true`, in case the current `MEDIUM` fee level is higher than the one specified in the transaction, the transaction will fail to avoid getting stuck with no confirmations."},"maxFee":{"description":"The maximum fee (gas price or fee per byte) that should be payed for the transaction. In case the current value of the requested `feeLevel` is higher than this requested maximum fee. Represented by a numeric string for accurate precision.","type":"string","example":"120"},"gasLimit":{"oneOf":[{"type":"string","description":"Numeric string (recommended)","example":"21000"},{"type":"number","description":"Number (deprecated)","example":21000}],"description":"For EVM-based blockchains only. Units of gas required to process the transaction. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"gasPrice":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For non-EIP-1559, EVM-based transactions. Price per gas unit (in Ethereum this is specified in Gwei). Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated."},"networkFee":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"For EVM-based blockchains only. The total transaction fee in the blockchain’s largest unit. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated. - The transaction blockchain fee.\n- For Ethereum, you can't pass gasPrice, gasLimit and networkFee all together.\n- A numeric value representation is required."},"replaceTxByHash":{"type":"string","description":"For EVM-based blockchains only. In case a transaction is stuck, specify the hash of the stuck transaction to replace it by this transaction with a higher fee, or to replace it with this transaction with a zero fee and drop it from the blockchain.","example":"00000000-0000-0000-0000-000000000000"},"extraParameters":{"type":"object","properties":{},"description":"Additional protocol / operation specific key-value parameters:\n\nFor UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)\n\nFor `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)\n\nFor `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.\n"},"customerRefId":{"type":"string","description":"The ID for AML providers to associate the owner of funds with transactions.","example":"abcdef"},"autoStaking":{"type":"boolean","description":"This feature is no longer supported."},"networkStaking":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"This feature is no longer supported."},"cpuStaking":{"oneOf":[{"type":"string","description":"Numeric string (recommended)"},{"type":"number","description":"Number (deprecated)"}],"description":"This feature is no longer supported."}}},"isDstCollateral":{"type":"boolean","description":"optional"}}}],"output":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the transaction."},"status":{"type":"string","description":"The primary status of the transaction. For details, see [Primary transaction statuses.] (https://developers.fireblocks.com/reference/primary-transaction-statuses)"},"systemMessages":{"type":"object","properties":{"type":{"type":"string","enum":["WARN","BLOCK"]},"message":{"type":"string","description":"A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.","example":"Slow transaction processing. Outgoing transactions might be stuck."}}}}},"description":"remove collateral, create withdraw request"},{"method":"get","path":"/off_exchange/collateral_accounts/{mainExchangeAccountId}","name":"off_exchange_collateral_accounts_getByMainexchangeaccountid","parameters":[{"type":"string","minimum":1,"description":"The id of the main exchange account for which the requested collateral account is associated with"}],"output":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["BINANCE","BINANCEUS","BITFINEX","BITHUMB","BITMEX","BITSO","BITSTAMP","BITTREX","CIRCLE","COINBASEPRO","COINMETRO","COINSPRO","CRYPTOCOM","DERIBIT","FTX","FIXUS","GEMINI","HITBTC","HUOBI","KORBIT","KRAKEN","LIQUID","POLONIEX","OKCOIN","OKEX","SEEDCX"]},"name":{"type":"string","description":"Display name of the exchange account"},"status":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"total":{"type":"string"},"available":{"type":"string"}}}},"tradingAccounts":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"balance":{"type":"string"},"lockedAmount":{"type":"string"},"total":{"type":"string"},"available":{"type":"string"}}}}}}},"isSubaccount":{"type":"boolean","description":"True if the account is a subaccount in an exchange"},"mainAccountId":{"description":"if the account is a sub-account, the ID of the main account","type":"string"}}},"description":"Find a specific collateral exchange account.\n\nReturns a collateral account by mainExchangeAccountId."},{"method":"post","path":"/webhooks/resend","name":"webhooks_resend_post","parameters":[],"output":{"type":"object","properties":{"messagesCount":{"type":"number"}}},"description":"Resend failed webhooks.\n\nResends all failed webhook notifications."},{"method":"post","path":"/webhooks/resend/{txId}","name":"webhooks_resend_postByTxid","parameters":[{"type":"string","minimum":1,"description":"The ID of the transaction for webhooks"},{}],"description":"Resend failed webhooks for a transaction by ID.\n\nResends failed webhook notifications for a transaction by ID."},{"method":"get","path":"/nfts/ownership/tokens","name":"nfts_ownership_tokens_get","parameters":[{"type":"object","properties":{"vaultAccountIds":{"type":"string","description":"A comma separated list of Vault Account IDs. Up to 100 are allowed in a single request"},"ids":{"type":"string","description":"A comma separated list of NFT IDs. Up to 100 are allowed in a single request."},"collectionIds":{"type":"string","description":"A comma separated list of collection IDs. Up to 100 are allowed in a single request."},"pageCursor":{"type":"string","description":"Page cursor to fetch"},"pageSize":{"minimum":1,"maximum":100,"type":"number","description":"Items per page (max 100)"},"sort":{"type":"array","items":{"type":"string","enum":["ownershipLastUpdateTime","name","collection.name","blockchainDescriptor"]},"description":"Sort by param, it can be one param or a list of params separated by comma"},"search":{"maximum":100,"type":"string","description":"Search owned tokens and their collections. Possible criteria for search: token name and id within the contract/collection, collection name, blockchain descriptor and name."}},"required":[]}],"output":{},"description":"List all owned tokens (paginated).\n\nReturns all tokens and their data in your workspace.\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n"},{"method":"put","path":"/nfts/ownership/tokens","name":"nfts_ownership_tokens_put","parameters":[{"type":"object","properties":{"vaultAccountId":{"type":"string","description":"Vault account filter"}},"required":["vaultAccountId"]}],"description":"Refresh vault account tokens.\n\nUpdates all tokens and balances per blockchain and vault account.\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n"},{"method":"get","path":"/nfts/ownership/collections","name":"nfts_ownership_collections_get","parameters":[{"type":"object","properties":{"search":{"maximum":100,"type":"string","description":"Search owned collections. Possible criteria for search: collection name, collection contract address."},"pageCursor":{"type":"string","description":"Page cursor to fetch"},"pageSize":{"minimum":1,"maximum":100,"type":"number","description":"Items per page (max 100)"},"sort":{"type":"array","items":{"type":"string","enum":["name"]},"description":"Sort by param, it can be one param or a list of params separated by comma"}},"required":[]}],"output":{},"description":"List owned collections (paginated).\n\nReturns all collections in your workspace\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n"},{"method":"get","path":"/nfts/tokens/{id}","name":"nfts_tokens_getById","parameters":[{"type":"string","description":"NFT ID"}],"output":{"type":"object","properties":{"id":{"type":"string","description":"The Fireblocks NFT asset id"},"tokenId":{"type":"string","description":"Token id within the contract/collection"},"standard":{"type":"string","description":"ERC721 / ERC1155"},"metadataURI":{"type":"string","description":"URL of the original token JSON metadata"},"cachedMetadataURI":{"type":"string","description":"URL of the cached token JSON metadata"},"media":{"description":"Media items extracted from metadata JSON","type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"Cached accessible URL"},"contentType":{"type":"string","enum":["IMAGE","VIDEO","ANIMATION","THREE_D","TEXT","GIF","UNKNOWN_TYPE","SVG","AUDIO"],"description":"Media type"}},"required":["url","contentType"]}},"collection":{"description":"Parent collection information","type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"}}},"blockchainDescriptor":{"type":"string","enum":["ETH","ETH_TEST3","POLYGON","POLYGON_TEST_MUMBAI"]},"description":{"type":"string"},"name":{"type":"string"}},"required":["id","tokenId","standard","media","blockchainDescriptor","description","name"]},"description":"List token data by ID.\n\nReturns the requested token data.\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n"},{"method":"put","path":"/nfts/tokens/{id}","name":"nfts_tokens_putById","parameters":[{"type":"string","description":"NFT ID"}],"description":"Refresh token metadata.\n\nUpdates the latest token metadata.\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n"},{"method":"get","path":"/nfts/tokens","name":"nfts_tokens_get","parameters":[{"type":"object","properties":{"ids":{"type":"string","description":"A comma separated list of NFT IDs. Up to 100 are allowed in a single request."},"pageCursor":{"type":"string","description":"Page cursor to fetch"},"pageSize":{"minimum":1,"maximum":100,"type":"number","description":"Items per page (max 100)"},"sort":{"type":"array","items":{"type":"string","enum":["collection.name","name","blockchainDescriptor"]},"description":"Sort by param, it can be one param or a list of params separated by comma"}},"required":["ids"]}],"output":{},"description":"List tokens by IDs.\n\nReturns the requested tokens data\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n"},{"method":"put","path":"/nfts/ownership/tokens/{id}/status","name":"nfts_ownership_tokens_status_putById","parameters":[{"type":"string","description":"NFT ID"},{"type":"object","properties":{"status":{"type":"string","enum":["LISTED","ARCHIVED"]}},"required":["status"]}],"description":"Update token ownership status.\n\nUpdates token ownership status for a tenant, in all tenant vaults.\n\n**Note**: This endpoint is now in Beta, disabled for general availability at this time.\n\nTo enroll in beta & enable this endpoint, contact your Fireblocks Customer Success Manager or reach out to [CSM@fireblocks.com](mailto:CSM@fireblocks.com).\n"},{"method":"get","path":"/connections","name":"connections_get","parameters":[{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"vaultAccountId":{"type":"number"},"connectionMethod":{"type":"string"},"feeLevel":{"type":"string"},"appUrl":{"type":"string"},"appName":{"type":"string"},"pageSize":{"type":"number","default":10,"maximum":50,"description":"Amount of results to return in the next page."},"next":{"type":"string","description":"Cursor to the next page"}},"required":[]}],"output":{"type":"object","properties":{"data":{"description":"Array with the requested Web3 connection's data","type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Id of the connection","example":"4e9e7051-f3b2-48e9-8ee6-b12492552657"},"userId":{"type":"string","description":"Id of the user that created the connection"},"sessionMetadata":{"description":"Metadata of the connection (provided by the dapp)","type":"object","properties":{"appUrl":{"type":"string"},"appName":{"type":"string"},"appDescription":{"type":"string"},"appIcon":{"type":"string"}}},"vaultAccountId":{"type":"number","description":"The vault to connect","example":1},"feeLevel":{"type":"string","enum":["MEDIUM","HIGH"],"description":"The default fee level"},"chainIds":{"description":"The chains approved for the connection","example":["ETH","ETH_TEST","SOL"],"type":"array","items":{"type":"string"}},"connectionType":{"type":"string","enum":["WalletConnect"],"description":"The connection's type"},"connectionMethod":{"type":"string","enum":["DESKTOP","MOBILE","API"],"description":"The method through which the connection was established"},"creationDate":{"format":"date-time","type":"string","description":"Timestamp of the session's creation"}},"required":["id","userId","sessionMetadata","vaultAccountId","feeLevel","chainIds","connectionType","connectionMethod","creationDate"]}},"paging":{"type":"object","properties":{"next":{"type":"string","description":"Cursor to the next page"}},"required":["next"]}},"required":["data"]},"description":"List all open Web3 connections.\n\nGet open Web3 connections."},{"method":"post","path":"/connections/wc","name":"connections_wc_post","parameters":[{"type":"object","properties":{"vaultAccountId":{"type":"number","description":"The ID of the vault to connect to the Web3 connection.","example":1},"feeLevel":{"type":"string","enum":["MEDIUM","HIGH"],"description":"The default fee level. Valid values are `MEDIUM` and `HIGH`."},"uri":{"type":"string","description":"The WalletConnect uri provided by the dapp.","example":"wc:77752975-906f-48f5-b59f-047826ee947e@1?bridge=https%3A%2F%2F0.bridge.walletconnect.org&key=64be99adc6086b7a729b0ec8c7e1f174927ab92e84f5c6f9527050225344a637"},"chainIds":{"description":"The ID of the blockchain network used in the Web3 connection.","example":["ETH","ETH_TEST"],"type":"array","items":{"type":"string"}}},"required":["vaultAccountId","feeLevel","uri","chainIds"]}],"output":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the Web3 connection initiated.","example":"4e9e7051-f3b2-48e9-8ee6-b12492552657"},"sessionMetadata":{"description":"Metadata of the Web3 connection (provided by the DApp).","type":"object","properties":{"appUrl":{"type":"string"},"appName":{"type":"string"},"appDescription":{"type":"string"},"appIcon":{"type":"string"}}}},"required":["id","sessionMetadata"]},"description":"Create a new Web3 connection.\n\nInitiate a new Web3 connection.\n\n* Note: After this succeeds, make a request to `PUT /v1/connections/wc/{id}` (below) to approve or reject the new Web3 connection."},{"method":"put","path":"/connections/wc/{id}","name":"connections_wc_putById","parameters":[{"type":"string","description":"The ID of the initiated Web3 connection to approve."},{"type":"object","properties":{"approve":{"type":"boolean","description":"Approval of the initiated Web3 connection."}},"required":["approve"]}],"description":"Respond to a pending Web3 connection request.\n\nSubmit a response to *approve* or *reject* an initiated Web3 connection.\n* Note: This call is used to complete your `POST /v1/connections/wc/` request.\n\nAfter this succeeds, your new Web3 connection is created and functioning."},{"method":"delete","path":"/connections/wc/{id}","name":"connections_wc_eraseById","parameters":[{"type":"string","description":"The ID of the existing Web3 connection to remove."}],"description":"Remove an existing Web3 connection.\n\nRemove a Web3 connection"},{"method":"post","path":"/screening/travel_rule/transaction/validate","name":"screening_travel_rule_transaction_validate_post","parameters":[{"type":"object","properties":{"transactionAsset":{"type":"string","example":"BTC","description":"Transaction asset symbol BTC,ETH)"},"destination":{"type":"string","example":"bc1qxy2kgdygjrsqtzq2n0yrf1234p83kkfjhx0wlh","description":"Transaction destination address"},"transactionAmount":{"type":"string","example":"10","description":"Transaction amount in the transaction asset"},"originatorVASPdid":{"type":"string","example":"did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2","description":"This is the identifier assigned to your VASP"},"originatorEqualsBeneficiary":{"type":"boolean","description":"\"True\" if the originator and beneficiary is the same person and you therefore do not need to collect any information. \"False\" if it is a third-party transfer."},"travelRuleBehavior":{"type":"boolean","description":"This will also check if the transaction is a TRAVEL_RULE in the beneficiary VASP's jurisdiction"},"beneficiaryVASPdid":{"type":"string","example":"did:ethr:0x46a7ed5813ce735387df2bfb245bd7722e0de992","description":"This is the identifier assigned to the VASP the funds are being sent to"},"beneficiaryVASPname":{"type":"string","example":"HelloCrypto","description":"Beneficiary VASP name"},"beneficiaryName":{"type":"string","example":"John Doe","description":"Beneficiary name"},"beneficiaryAccountNumber":{"type":"string","example":"1234-1234-1234-12234","description":"Beneficiary name"},"beneficiaryAddress":{"example":"{\"addressLine: [Wayne Manor, Gotham City, New York, USA]\"}","description":"Beneficiary name","type":"object","properties":{"street":{"type":"string","example":"1234 Example St","description":"Street address"},"city":{"type":"string","example":"New York","description":"City"},"state":{"type":"string","example":"NY","description":"State or province"},"postalCode":{"type":"string","example":"10001","description":"Postal or ZIP code"}}}},"required":["transactionAsset","destination","transactionAmount","originatorVASPdid","originatorEqualsBeneficiary","travelRuleBehavior","beneficiaryVASPdid","beneficiaryVASPname","beneficiaryName","beneficiaryAccountNumber","beneficiaryAddress"]}],"output":{"type":"object","properties":{"isValid":{"type":"boolean","description":"\"isValid\" will tell you if you have collected all the information needed for the travel rule data transfer. Once this field = \"true\", you can move on to the next step which is to transfer the front-end information to your back-end and perform Travel Rule Transaction create"},"type":{"type":"string","description":"\"type\" will tell you if the virtual asset value converted to FIAT value of the withdrawal request is above (=TRAVELRULE) or below (=BELOW_THRESHOLD) the threshold in your jurisdiction. If it is to an unhosted wallet which does not require travel rule information to be sent and only collected, it will say NON_CUSTODIAL.","example":"TRAVELRULE"},"beneficiaryAddressType":{"type":"string","description":"\"beneficiaryAddressType\" will tell you if your blockchain analytics provider or internal address book has been able to identify the wallet address.","example":"UNKNOWN"},"addressSource":{"type":"string","description":"\"addressSource\" will tell you if the address was found in your internal address book or identified by the blockchain analytics provider.","example":"UNKNOWN"},"beneficiaryVASPdid":{"type":"string","description":"The VASP DID of the beneficiary VASP","example":"did:ethr:0x46a7ed5813ce735387df2bfb245bd7722e0de992"},"beneficiaryVASPname":{"type":"string","description":"\"beneficiaryVASPname\" will tell you the name of the VASP that has been identified as the owner of the wallet address. This name is used in a subsequent call to get its DID.","example":"Fireblocks"},"warnings":{"description":"\"errors/warnings\" will tell you what information about the beneficiary you need to collect from the sender.","example":["optional-beneficiaryAccountNumber"],"type":"array","items":{"type":"string"}}},"required":["isValid","type","beneficiaryAddressType","addressSource","beneficiaryVASPdid","beneficiaryVASPname","warnings"]},"description":"Validate Travel Rule Transaction.\n\nValidate Travel Rule transactions.\n\nChecks what beneficiary VASP details are required by your jurisdiction and the beneficiary's jurisdiction.\n\n**Note:** The reference content in this section documents the Travel Rule beta endpoint. The beta endpoint includes APIs that are currently in preview and aren't yet generally available.\n\nTo enroll in the beta and enable this endpoint, contact your Fireblocks Customer Success Manager or send an email to [CSM@fireblocks.com](mailto:CSM@fireblocks.com)."},{"method":"post","path":"/screening/travel_rule/transaction/validate/full","name":"screening_travel_rule_transaction_validate_full_post","parameters":[{"type":"object","properties":{"transactionAsset":{"type":"string","description":"The asset involved in the transaction"},"transactionAmount":{"type":"string","description":"The amount of the transaction"},"originatorDid":{"type":"string","description":"The DID of the transaction originator"},"beneficiaryDid":{"type":"string","description":"The DID of the transaction beneficiary"},"originatorVASPdid":{"type":"string","description":"The VASP ID of the transaction originator"},"beneficiaryVASPdid":{"type":"string","description":"The VASP ID of the transaction beneficiary"},"beneficiaryVASPname":{"type":"string","description":"The name of the VASP acting as the beneficiary"},"transactionBlockchainInfo":{"description":"Information about the blockchain transaction","type":"object","properties":{"txHash":{"type":"string"},"origin":{"type":"string"},"destination":{"type":"string"}}},"originator":{"description":"Information about the originator of the transaction","type":"object","properties":{"fullName":{"type":"string"},"dateOfBirth":{"type":"string"},"placeOfBirth":{"type":"string"},"address":{"type":"string"},"identificationNumber":{"type":"string"},"nationality":{"type":"string"},"countryOfResidence":{"type":"string"},"taxIdentificationNumber":{"type":"string"},"customerNumber":{"type":"string"}}},"beneficiary":{"description":"Information about the beneficiary of the transaction","type":"object","properties":{"fullName":{"type":"string"},"dateOfBirth":{"type":"string"},"placeOfBirth":{"type":"string"},"address":{"type":"string"},"identificationNumber":{"type":"string"},"nationality":{"type":"string"},"countryOfResidence":{"type":"string"},"taxIdentificationNumber":{"type":"string"},"customerNumber":{"type":"string"}}},"encrypted":{"type":"string","description":"Encrypted data related to the transaction"},"protocol":{"type":"string","description":"The protocol used to perform the travel rule"},"notificationEmail":{"type":"string","description":"The email address where a notification should be sent upon completion of the travel rule"},"skipBeneficiaryDataValidation":{"type":"boolean","description":"Whether to skip validation of beneficiary data"},"travelRuleBehavior":{"type":"boolean","description":"Whether to check if the transaction is a TRAVEL_RULE in the beneficiary VASP's jurisdiction"},"originatorProof":{"description":"Ownership proof related to the originator of the transaction","type":"object","properties":{"type":{"type":"string","example":"passport","description":"Type of ownership proof"},"id":{"type":"string","example":"123456789","description":"Identification number"},"name":{"type":"string","example":"Alice","description":"Name of owner"},"country":{"type":"string","example":"US","description":"Country of issuance"},"issueDate":{"type":"string","example":"2022-01-01","description":"Date of issuance"},"issuer":{"type":"string","example":"US Government","description":"Name of issuing entity"}}},"beneficiaryProof":{"description":"Ownership proof related to the beneficiary of the transaction","type":"object","properties":{"type":{"type":"string","example":"passport","description":"Type of ownership proof"},"id":{"type":"string","example":"123456789","description":"Identification number"},"name":{"type":"string","example":"Alice","description":"Name of owner"},"country":{"type":"string","example":"US","description":"Country of issuance"},"issueDate":{"type":"string","example":"2022-01-01","description":"Date of issuance"},"issuer":{"type":"string","example":"US Government","description":"Name of issuing entity"}}},"pii":{"description":"Personal identifiable information related to the transaction","type":"object","properties":{"fullName":{"type":"string"},"dateOfBirth":{"type":"string"},"placeOfBirth":{"type":"string"},"address":{"type":"string"},"identificationNumber":{"type":"string"},"nationality":{"type":"string"},"countryOfResidence":{"type":"string"},"taxIdentificationNumber":{"type":"string"},"customerNumber":{"type":"string"}}}},"required":["transactionAsset","transactionAmount","originatorDid","beneficiaryDid","originatorVASPdid","beneficiaryVASPdid","beneficiaryVASPname","transactionBlockchainInfo","originator","beneficiary","encrypted","protocol","notificationEmail","skipBeneficiaryDataValidation","travelRuleBehavior","originatorProof","beneficiaryProof","pii"]}],"output":{"type":"object","properties":{"isValid":{"type":"boolean","description":"\"isValid\" will tell you if you have collected all the information needed for the travel rule data transfer. Once this field = \"true\", you can move on to the next step which is to transfer the front-end information to your back-end and perform Travel Rule Transaction create"},"type":{"type":"string","description":"\"type\" will tell you if the virtual asset value converted to FIAT value of the withdrawal request is above (=TRAVELRULE) or below (=BELOW_THRESHOLD) the threshold in your jurisdiction. If it is to an unhosted wallet which does not require travel rule information to be sent and only collected, it will say NON_CUSTODIAL.","example":"TRAVELRULE"},"beneficiaryAddressType":{"type":"string","description":"\"beneficiaryAddressType\" will tell you if your blockchain analytics provider or internal address book has been able to identify the wallet address.","example":"UNKNOWN"},"addressSource":{"type":"string","description":"\"addressSource\" will tell you if the address was found in your internal address book or identified by the blockchain analytics provider.","example":"UNKNOWN"},"beneficiaryVASPdid":{"type":"string","description":"The VASP DID of the beneficiary VASP","example":"did:ethr:0x46a7ed5813ce735387df2bfb245bd7722e0de992"},"beneficiaryVASPname":{"type":"string","description":"\"beneficiaryVASPname\" will tell you the name of the VASP that has been identified as the owner of the wallet address. This name is used in a subsequent call to get its DID.","example":"Fireblocks"},"warnings":{"description":"\"errors/warnings\" will tell you what information about the beneficiary you need to collect from the sender.","example":["optional-beneficiaryAccountNumber"],"type":"array","items":{"type":"string"}}},"required":["isValid","type","beneficiaryAddressType","addressSource","beneficiaryVASPdid","beneficiaryVASPname","warnings"]},"description":"Validate Full Travel Rule Transaction.\n\nValidate Full Travel Rule transactions.\n\nChecks for all required information on the originator and beneficiary VASPs.\n\n**Note:** The reference content in this section documents the Travel Rule beta endpoint. The beta endpoint includes APIs that are currently in preview and aren't yet generally available.\n\nTo enroll in the beta and enable this endpoint, contact your Fireblocks Customer Success Manager or send an email to [CSM@fireblocks.com](mailto:CSM@fireblocks.com)."},{"method":"get","path":"/screening/travel_rule/vasp/{did}","name":"screening_travel_rule_vasp_getByDid","parameters":[{"type":"string"},{"type":"object","properties":{"order":{"type":"string","description":"Field to order by"},"per_page":{"type":"number","description":"Records per page"},"page":{"type":"number","description":"Page number"},"fields":{"type":"string","description":"CSV of fields to return (all, \"blank\" or see list of all field names below)"}},"required":[]}],"output":{"type":"object","properties":{"did":{"type":"string"},"name":{"type":"string"},"verificationStatus":{"type":"string"},"addressLine1":{"type":"string"},"addressLine2":{"type":"string"},"city":{"type":"string"},"country":{"type":"string"},"emailDomains":{"type":"string"},"website":{"type":"string"},"logo":{"type":"string"},"legalStructure":{"type":"string"},"legalName":{"type":"string"},"yearFounded":{"type":"string"},"incorporationCountry":{"type":"string"},"isRegulated":{"type":"string"},"otherNames":{"type":"string"},"identificationType":{"type":"string"},"identificationCountry":{"type":"string"},"businessNumber":{"type":"string"},"regulatoryAuthorities":{"type":"string"},"jurisdictions":{"type":"string"},"street":{"type":"string"},"number":{"type":"string"},"unit":{"type":"string"},"postCode":{"type":"string"},"state":{"type":"string"},"certificates":{"type":"string"},"description":{"type":"string"},"travelRule_OPENVASP":{"type":"string"},"travelRule_SYGNA":{"type":"string"},"travelRule_TRISA":{"type":"string"},"travelRule_TRLIGHT":{"type":"string"},"travelRule_EMAIL":{"type":"string"},"travelRule_TRP":{"type":"string"},"travelRule_SHYFT":{"type":"string"},"travelRule_USTRAVELRULEWG":{"type":"string"},"createdAt":{"type":"string"},"createdBy":{"type":"string"},"updatedAt":{"type":"string"},"updatedBy":{"type":"string"},"lastSentDate":{"type":"string"},"lastReceivedDate":{"type":"string"},"documents":{"type":"string"},"hasAdmin":{"type":"boolean"},"isNotifiable":{"type":"boolean"},"issuers":{"type":"object","properties":{"yearFounded":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"isRegulated":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"regulatoryAuthorities":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"name":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"logo":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"website":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"legalName":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"legalStructure":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"incorporationCountry":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"businessNumber":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"addressLine1":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"city":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"country":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"description":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]}},"required":["yearFounded","isRegulated","regulatoryAuthorities","name","logo","website","legalName","legalStructure","incorporationCountry","businessNumber","addressLine1","city","country","description"]}},"required":["did","name","verificationStatus","addressLine1","addressLine2","city","country","emailDomains","website","logo","legalStructure","legalName","yearFounded","incorporationCountry","isRegulated","otherNames","identificationType","identificationCountry","businessNumber","regulatoryAuthorities","jurisdictions","street","number","unit","postCode","state","certificates","description","travelRule_OPENVASP","travelRule_SYGNA","travelRule_TRISA","travelRule_TRLIGHT","travelRule_EMAIL","travelRule_TRP","travelRule_SHYFT","travelRule_USTRAVELRULEWG","createdAt","createdBy","updatedAt","updatedBy","lastSentDate","lastReceivedDate","documents","hasAdmin","isNotifiable","issuers"]},"description":"Get VASP details.\n\nGet VASP Details.\n\nReturns information about a VASP that has the specified DID.\n\n**Note:** The reference content in this section documents the Travel Rule beta endpoint. The beta endpoint includes APIs that are currently in preview and aren't yet generally available.\n\nTo enroll in the beta and enable this endpoint, contact your Fireblocks Customer Success Manager or send an email to [CSM@fireblocks.com](mailto:CSM@fireblocks.com)."},{"method":"get","path":"/screening/travel_rule/vasp","name":"screening_travel_rule_vasp_get","parameters":[{"type":"object","properties":{"order":{"type":"string","description":"Field to order by"},"per_page":{"type":"number","description":"Records per page"},"page":{"type":"number","description":"Page number"},"fields":{"type":"string","description":"CSV of fields to return (all, \"blank\" or see list of all field names below)"}},"required":[]}],"output":{"type":"object","properties":{"vasps":{"type":"array","items":{"type":"object","properties":{"did":{"type":"string"},"name":{"type":"string"},"verificationStatus":{"type":"string"},"addressLine1":{"type":"string"},"addressLine2":{"type":"string"},"city":{"type":"string"},"country":{"type":"string"},"emailDomains":{"type":"string"},"website":{"type":"string"},"logo":{"type":"string"},"legalStructure":{"type":"string"},"legalName":{"type":"string"},"yearFounded":{"type":"string"},"incorporationCountry":{"type":"string"},"isRegulated":{"type":"string"},"otherNames":{"type":"string"},"identificationType":{"type":"string"},"identificationCountry":{"type":"string"},"businessNumber":{"type":"string"},"regulatoryAuthorities":{"type":"string"},"jurisdictions":{"type":"string"},"street":{"type":"string"},"number":{"type":"string"},"unit":{"type":"string"},"postCode":{"type":"string"},"state":{"type":"string"},"certificates":{"type":"string"},"description":{"type":"string"},"travelRule_OPENVASP":{"type":"string"},"travelRule_SYGNA":{"type":"string"},"travelRule_TRISA":{"type":"string"},"travelRule_TRLIGHT":{"type":"string"},"travelRule_EMAIL":{"type":"string"},"travelRule_TRP":{"type":"string"},"travelRule_SHYFT":{"type":"string"},"travelRule_USTRAVELRULEWG":{"type":"string"},"createdAt":{"type":"string"},"createdBy":{"type":"string"},"updatedAt":{"type":"string"},"updatedBy":{"type":"string"},"lastSentDate":{"type":"string"},"lastReceivedDate":{"type":"string"},"documents":{"type":"string"},"hasAdmin":{"type":"boolean"},"isNotifiable":{"type":"boolean"},"issuers":{"type":"object","properties":{"yearFounded":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"isRegulated":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"regulatoryAuthorities":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"name":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"logo":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"website":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"legalName":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"legalStructure":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"incorporationCountry":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"businessNumber":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"addressLine1":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"city":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"country":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]},"description":{"type":"object","properties":{"issuerDid":{"type":"string"}},"required":["issuerDid"]}},"required":["yearFounded","isRegulated","regulatoryAuthorities","name","logo","website","legalName","legalStructure","incorporationCountry","businessNumber","addressLine1","city","country","description"]}},"required":["did","name","verificationStatus","addressLine1","addressLine2","city","country","emailDomains","website","logo","legalStructure","legalName","yearFounded","incorporationCountry","isRegulated","otherNames","identificationType","identificationCountry","businessNumber","regulatoryAuthorities","jurisdictions","street","number","unit","postCode","state","certificates","description","travelRule_OPENVASP","travelRule_SYGNA","travelRule_TRISA","travelRule_TRLIGHT","travelRule_EMAIL","travelRule_TRP","travelRule_SHYFT","travelRule_USTRAVELRULEWG","createdAt","createdBy","updatedAt","updatedBy","lastSentDate","lastReceivedDate","documents","hasAdmin","isNotifiable","issuers"]}}},"required":["vasps"]},"description":"Get All VASPs.\n\nReturns a list of VASPs. VASPs can be searched and sorted and results are paginated.\n\n**Note:** The reference content in this section documents the Travel Rule beta endpoint. The beta endpoint includes APIs that are currently in preview and aren't yet generally available.\n\nTo enroll in the beta and enable this endpoint, contact your Fireblocks Customer Success Manager or send an email to [CSM@fireblocks.com](mailto:CSM@fireblocks.com)."},{"method":"put","path":"/screeening/travel_rule/vasp/update","name":"screeening_travel_rule_vasp_update_put","parameters":[{"type":"object","properties":{"did":{"type":"string","example":"did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2","description":"The decentralized identifier of the VASP"},"pii_didkey":{"type":"string","example":"did:key:z6Mks5CZRaiooKYhq5TwtXQC1gWhwiZnmiKfFrMnYY62MhYf","description":"The PII DID key of the VASP"}},"required":["did","pii_didkey"]}],"output":{"type":"object","properties":{"did":{"type":"string","example":"did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2","description":"The decentralized identifier of the VASP"},"pii_didkey":{"type":"string","example":"did:key:z6Mks5CZRaiooKYhq5TwtXQC1gWhwiZnmiKfFrMnYY62MhYf","description":"The PII DID key of the VASP"}},"required":["did","pii_didkey"]},"description":"Add jsonDidKey to VASP details.\n\nUpdate VASP Details.\n\nUpdates a VASP with the provided parameters. Use this endpoint to add your public jsonDIDkey generated by Notabene.\n\n**Note:** The reference content in this section documents the Travel Rule beta endpoint. The beta endpoint includes APIs that are currently in preview and aren't yet generally available.\n\nTo enroll in the beta and enable this endpoint, contact your Fireblocks Customer Success Manager or send an email to [CSM@fireblocks.com](mailto:CSM@fireblocks.com)."},{"method":"get","path":"/tap/active_policy","name":"tap_active_policy_get","parameters":[],"output":{"type":"object","description":"Policy validation","properties":{"policy":{"type":"object","description":"Response object for policy operations","properties":{"rules":{"type":"array","description":"A set of policy rules","items":{"type":"object","description":"Policy rule which is enforced on transactions","properties":{"operator":{"type":"string","description":"(deprecated - replaced by \"operators\") | Defines users who can initiate the type of transaction to which the rule applies. options are * \"*\" - All users are allowed * Specific User id","deprecated":true},"operators":{"type":"object","description":"Defines users/groups who can initiate the type of transaction to which the rule applies.","properties":{"wildcard":{"type":"string","enum":["*"],"description":"If used then this property should appear as the only child property\n* \"*\" - All users are allowed\n"},"users":{"type":"array","description":"Set of users ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Set of group ids","items":{"type":"string"}},"services":{"type":"array","description":"set of services to initiate transactions","items":{"type":"string"}}}},"transactionType":{"type":"string","enum":["TRANSFER","CONTRACT_CALL","APPROVE","MINT","BURN","SUPPLY","REDEEM","STAKE","RAW","TYPED_MESSAGE"],"description":"Defines the type of transaction to which the rule applies.\n * TRANSFER - Default. Transfers funds from one account to another\n * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.\n * APPROVE - Allows a smart contract to withdraw from a designated wallet.\n * MINT - Perform a mint operation (increase supply) on a supported token\n * BURN - Perform a burn operation (reduce supply) on a supported token\n * SUPPLY - Use for DeFi to lend assets\n * REDEEM - Use for DeFi to get lending back\n * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.\n * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.\n * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.\n"},"designatedSigner":{"type":"string","description":"(deprecated - replaced by \"designatedSigners\") Id representing the user who signs transactions that match a specific rule","deprecated":true},"designatedSigners":{"type":"object","description":"Set of ids representing the users who signs transactions that match a specific rule","properties":{"users":{"type":"array","description":"Set of users ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Set of group ids","items":{"type":"string"}}}},"type":{"type":"string","enum":["TRANSFER"],"description":"Policy rule type"},"action":{"type":"string","enum":["ALLOW","BLOCK","2-TIER"],"description":"Defines what occurs when a transaction meets the rule's criteria\n* ALLOW - The transaction goes through and can be signed without requiring additional approvals\n* BLOCK - The transaction is automatically blocked\n* 2-TIER - Only these users or user groups can approve \n If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through\n The list of entities are set is \"authorizationGroups\" field\n"},"asset":{"type":"string","description":"Defines the type of asset being transacted, options are\n* \"*\" - All assets\n* Specific asset\n"},"srcType":{"description":"(deprecated - replaced by \"src\") source account type"},"srcSubType":{"description":"(deprecated - replaced by \"src\") source sub account type"},"srcId":{"description":"(deprecated - replaced by \"src\") source account id"},"src":{"type":"object","description":"Defines source accounts the rule allows transfers to originate from","properties":{"ids":{"type":"array","description":"A set of ids","items":{"type":"array","description":"A set of ids in a tuple format","items":{"type":"string"},"minItems":1,"maxItems":3}}}},"dstType":{"description":"(deprecated - replaced by \"dst\") destination account type"},"dstSubType":{"description":"(deprecated - replaced by \"dst\") destination sub account type"},"dstId":{"description":"(deprecated - replaced by \"dst\") destination account id"},"dst":{"type":"object","description":"Defines the destination accounts the rule allows transfers to","properties":{"ids":{"type":"array","description":"A set of ids","items":{"type":"array","description":"A set of ids in a tuple format","items":{"type":"string"},"minItems":1,"maxItems":3}}}},"dstAddressType":{"type":"string","enum":["WHITELISTED","ONE_TIME","*"],"description":"Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.\nBy default, you can only transfer to an external address after it’s whitelisted.\n * WHITELISTED - Can only be sent to whitelisted addresses.\n * ONE_TIME - Can only be sent to non-whitelisted external addresses.\n * \"*\" - can be sent to whitelisted addresses or non-whitelisted external\n"},"amountCurrency":{"type":"string","enum":["USD","EUR","NATIVE"],"description":"* USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.\n* EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.\n* NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.\n"},"amountScope":{"type":"string","enum":["SINGLE_TX","TIMEFRAME"],"description":"* SINGLE_TX - limit applies to a single transaction\n* TIMEFRAME - limit applies to all transactions within the defined time period\n"},"amount":{"type":"number","description":"Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)"},"periodSec":{"type":"number","description":"Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.\nWhen the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.\n"},"authorizers":{"type":"array","description":"(deprecated - replaced by \"authorizationGroups\") Allowed entities which can approves a transaction","deprecated":true,"items":{"type":"string"}},"authorizersCount":{"type":"number","description":"(deprecated - replaced by \"authorizationGroups\") Min amount of entities which are needed to approve a transaction","deprecated":true},"authorizationGroups":{"type":"object","description":"Defines the transaction approval terms","properties":{"logic":{"type":"string","enum":["AND","OR"],"description":"* AND - requires approval of all authorization groups\n* OR - requires approval of at least one of the authorization groups\n"},"allowOperatorAsAuthorizer":{"type":"boolean","description":"Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction"},"groups":{"type":"array","description":"Groups of entities which can approve the transaction","items":{"type":"object","properties":{"users":{"type":"array","description":"User ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Group ids","items":{"type":"string"}},"th":{"type":"number","description":"Represents the min amount of entities which are required to approve the transaction, default is 1."}}}}}},"amountAggregation":{"type":"object","description":"Defines the method by which the Policy Engine calculates accumulation.\nIt uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.\n","properties":{"operators":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"},"srcTransferPeers":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"},"dstTransferPeers":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"}}},"rawMessageSigning":{"type":"object","description":"Raw message signing configuration","properties":{"algorithm":{"type":"string"},"derivationPath":{"type":"object","properties":{"path":{"type":"array","items":{"type":"number"}}}}}},"applyForApprove":{"type":"boolean","description":"Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)"},"applyForTypedMessage":{"type":"boolean","description":"Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)"},"externalDescriptor":{"type":"string","description":"A unique id identifying the rule"}},"required":["type","action","asset","amountCurrency","amountScope","amount","periodSec","externalDescriptor"]}},"metadata":{"type":"object","description":"Policy related metadata","properties":{"editedBy":{"type":"string","description":"The user id of the user who last edited the policy"},"editedAt":{"type":"string","description":"The timestamp of the last edit of the policy"},"publishedBy":{"type":"string","description":"The user id of the user who last published the policy"},"publishedAt":{"type":"string","description":"The timestamp of the last publish of the policy"}}}},"required":["rules","metadata"]},"validation":{"type":"object","description":"Policy validation object","properties":{"status":{"type":"string","description":"Validation status"},"checkResult":{"type":"object","description":"Policy rules validation result","properties":{"errors":{"type":"number","description":"Number of errors"},"result":{"type":"array","description":"A set of validation results","items":{"type":"object","description":"The rule validation result","properties":{"index":{"type":"number","description":"Rule index number in the policy"},"status":{"type":"string","enum":["ok","failure"],"description":"Validation status"},"errors":{"type":"array","description":"A set of rule validation error objects","items":{"type":"object","description":"Rule validation result error","properties":{"errorMessage":{"type":"string","description":"Error message"},"errorCode":{"type":"number","description":"error code"},"errorCodeName":{"type":"string","description":"error code name"},"errorField":{"type":"string","enum":["operator","operators","authorizationGroups","designatedSigner","designatedSigners","contractMethods","amountAggregation","src","dst"],"description":"The field which the error relates to\n* operator - transaction initiator\n* operators - transaction initiators\n* authorizationGroups - transaction authorizer groups\n* designatedSigner - transaction signer\n* designatedSigners - transaction signers\n* contractMethods - contract methods\n* amountAggregation - transaction amount aggregation configuration\n* src - transaction source asset configuration\n* dst - transaction destination asset configuration\n"}},"required":["errorMessage","errorCode","errorCodeName","errorField"]}}},"required":["index","status","errors"]}}},"required":["errors","result"]}},"required":["status","checkResult"]}},"required":["policy","validation"]},"description":"Get the active policy and its validation.\n\nReturns the active policy and its validation.
\n**Note:** These endpoints are currently in beta and might be subject to changes.\nIf you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"get","path":"/tap/draft","name":"tap_draft_get","parameters":[],"output":{"type":"object","description":"Draft validation","properties":{"draftResponse":{"type":"object","description":"Response object for draft operations","properties":{"status":{"type":"string","description":"Operation status"},"rules":{"type":"array","description":"Draft rules","items":{"type":"object","description":"Policy rule which is enforced on transactions","properties":{"operator":{"type":"string","description":"(deprecated - replaced by \"operators\") | Defines users who can initiate the type of transaction to which the rule applies. options are * \"*\" - All users are allowed * Specific User id","deprecated":true},"operators":{"type":"object","description":"Defines users/groups who can initiate the type of transaction to which the rule applies.","properties":{"wildcard":{"type":"string","enum":["*"],"description":"If used then this property should appear as the only child property\n* \"*\" - All users are allowed\n"},"users":{"type":"array","description":"Set of users ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Set of group ids","items":{"type":"string"}},"services":{"type":"array","description":"set of services to initiate transactions","items":{"type":"string"}}}},"transactionType":{"type":"string","enum":["TRANSFER","CONTRACT_CALL","APPROVE","MINT","BURN","SUPPLY","REDEEM","STAKE","RAW","TYPED_MESSAGE"],"description":"Defines the type of transaction to which the rule applies.\n * TRANSFER - Default. Transfers funds from one account to another\n * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.\n * APPROVE - Allows a smart contract to withdraw from a designated wallet.\n * MINT - Perform a mint operation (increase supply) on a supported token\n * BURN - Perform a burn operation (reduce supply) on a supported token\n * SUPPLY - Use for DeFi to lend assets\n * REDEEM - Use for DeFi to get lending back\n * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.\n * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.\n * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.\n"},"designatedSigner":{"type":"string","description":"(deprecated - replaced by \"designatedSigners\") Id representing the user who signs transactions that match a specific rule","deprecated":true},"designatedSigners":{"type":"object","description":"Set of ids representing the users who signs transactions that match a specific rule","properties":{"users":{"type":"array","description":"Set of users ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Set of group ids","items":{"type":"string"}}}},"type":{"type":"string","enum":["TRANSFER"],"description":"Policy rule type"},"action":{"type":"string","enum":["ALLOW","BLOCK","2-TIER"],"description":"Defines what occurs when a transaction meets the rule's criteria\n* ALLOW - The transaction goes through and can be signed without requiring additional approvals\n* BLOCK - The transaction is automatically blocked\n* 2-TIER - Only these users or user groups can approve \n If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through\n The list of entities are set is \"authorizationGroups\" field\n"},"asset":{"type":"string","description":"Defines the type of asset being transacted, options are\n* \"*\" - All assets\n* Specific asset\n"},"srcType":{"description":"(deprecated - replaced by \"src\") source account type"},"srcSubType":{"description":"(deprecated - replaced by \"src\") source sub account type"},"srcId":{"description":"(deprecated - replaced by \"src\") source account id"},"src":{"type":"object","description":"Defines source accounts the rule allows transfers to originate from","properties":{"ids":{"type":"array","description":"A set of ids","items":{"type":"array","description":"A set of ids in a tuple format","items":{"type":"string"},"minItems":1,"maxItems":3}}}},"dstType":{"description":"(deprecated - replaced by \"dst\") destination account type"},"dstSubType":{"description":"(deprecated - replaced by \"dst\") destination sub account type"},"dstId":{"description":"(deprecated - replaced by \"dst\") destination account id"},"dst":{"type":"object","description":"Defines the destination accounts the rule allows transfers to","properties":{"ids":{"type":"array","description":"A set of ids","items":{"type":"array","description":"A set of ids in a tuple format","items":{"type":"string"},"minItems":1,"maxItems":3}}}},"dstAddressType":{"type":"string","enum":["WHITELISTED","ONE_TIME","*"],"description":"Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.\nBy default, you can only transfer to an external address after it’s whitelisted.\n * WHITELISTED - Can only be sent to whitelisted addresses.\n * ONE_TIME - Can only be sent to non-whitelisted external addresses.\n * \"*\" - can be sent to whitelisted addresses or non-whitelisted external\n"},"amountCurrency":{"type":"string","enum":["USD","EUR","NATIVE"],"description":"* USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.\n* EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.\n* NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.\n"},"amountScope":{"type":"string","enum":["SINGLE_TX","TIMEFRAME"],"description":"* SINGLE_TX - limit applies to a single transaction\n* TIMEFRAME - limit applies to all transactions within the defined time period\n"},"amount":{"type":"number","description":"Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)"},"periodSec":{"type":"number","description":"Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.\nWhen the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.\n"},"authorizers":{"type":"array","description":"(deprecated - replaced by \"authorizationGroups\") Allowed entities which can approves a transaction","deprecated":true,"items":{"type":"string"}},"authorizersCount":{"type":"number","description":"(deprecated - replaced by \"authorizationGroups\") Min amount of entities which are needed to approve a transaction","deprecated":true},"authorizationGroups":{"type":"object","description":"Defines the transaction approval terms","properties":{"logic":{"type":"string","enum":["AND","OR"],"description":"* AND - requires approval of all authorization groups\n* OR - requires approval of at least one of the authorization groups\n"},"allowOperatorAsAuthorizer":{"type":"boolean","description":"Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction"},"groups":{"type":"array","description":"Groups of entities which can approve the transaction","items":{"type":"object","properties":{"users":{"type":"array","description":"User ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Group ids","items":{"type":"string"}},"th":{"type":"number","description":"Represents the min amount of entities which are required to approve the transaction, default is 1."}}}}}},"amountAggregation":{"type":"object","description":"Defines the method by which the Policy Engine calculates accumulation.\nIt uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.\n","properties":{"operators":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"},"srcTransferPeers":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"},"dstTransferPeers":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"}}},"rawMessageSigning":{"type":"object","description":"Raw message signing configuration","properties":{"algorithm":{"type":"string"},"derivationPath":{"type":"object","properties":{"path":{"type":"array","items":{"type":"number"}}}}}},"applyForApprove":{"type":"boolean","description":"Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)"},"applyForTypedMessage":{"type":"boolean","description":"Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)"},"externalDescriptor":{"type":"string","description":"A unique id identifying the rule"}},"required":["type","action","asset","amountCurrency","amountScope","amount","periodSec","externalDescriptor"]}},"draftId":{"type":"string","description":"Draft unique id"},"metadata":{"type":"object","description":"Policy related metadata","properties":{"editedBy":{"type":"string","description":"The user id of the user who last edited the policy"},"editedAt":{"type":"string","description":"The timestamp of the last edit of the policy"},"publishedBy":{"type":"string","description":"The user id of the user who last published the policy"},"publishedAt":{"type":"string","description":"The timestamp of the last publish of the policy"}}}},"required":["draftId","status","rules","metadata"]},"validation":{"type":"object","description":"Policy validation object","properties":{"status":{"type":"string","description":"Validation status"},"checkResult":{"type":"object","description":"Policy rules validation result","properties":{"errors":{"type":"number","description":"Number of errors"},"result":{"type":"array","description":"A set of validation results","items":{"type":"object","description":"The rule validation result","properties":{"index":{"type":"number","description":"Rule index number in the policy"},"status":{"type":"string","enum":["ok","failure"],"description":"Validation status"},"errors":{"type":"array","description":"A set of rule validation error objects","items":{"type":"object","description":"Rule validation result error","properties":{"errorMessage":{"type":"string","description":"Error message"},"errorCode":{"type":"number","description":"error code"},"errorCodeName":{"type":"string","description":"error code name"},"errorField":{"type":"string","enum":["operator","operators","authorizationGroups","designatedSigner","designatedSigners","contractMethods","amountAggregation","src","dst"],"description":"The field which the error relates to\n* operator - transaction initiator\n* operators - transaction initiators\n* authorizationGroups - transaction authorizer groups\n* designatedSigner - transaction signer\n* designatedSigners - transaction signers\n* contractMethods - contract methods\n* amountAggregation - transaction amount aggregation configuration\n* src - transaction source asset configuration\n* dst - transaction destination asset configuration\n"}},"required":["errorMessage","errorCode","errorCodeName","errorField"]}}},"required":["index","status","errors"]}}},"required":["errors","result"]}},"required":["status","checkResult"]}},"required":["draftResponse","validation"]},"description":"Get the active draft.\n\nReturns the active draft and its validation.
\n**Note:** These endpoints are currently in beta and might be subject to changes.\nIf you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"post","path":"/tap/draft","name":"tap_draft_post","parameters":[{}],"output":{"type":"object","description":"Response object of the publish policy operation","properties":{"status":{"type":"string","enum":["SUCCESS","UNVALIDATED","INVALID_CONFIGURATION","PENDING","PENDING_CONSOLE_APPROVAL","AWAITING_QUORUM","UNHANDLED_ERROR"],"description":"* SUCCESS - success\n* UNVALIDATED - not validated yet\n* INVALID_CONFIGURATION - at least one rule is invalid\n* PENDING - pending approval\n* PENDING_CONSOLE_APPROVAL - pending approval from the console app\n* AWAITING_QUORUM - pending quorum approval\n* UNHANDLED_ERROR - unhandled error\n"},"rules":{"type":"array","items":{"type":"object","description":"Policy rule which is enforced on transactions","properties":{"operator":{"type":"string","description":"(deprecated - replaced by \"operators\") | Defines users who can initiate the type of transaction to which the rule applies. options are * \"*\" - All users are allowed * Specific User id","deprecated":true},"operators":{"type":"object","description":"Defines users/groups who can initiate the type of transaction to which the rule applies.","properties":{"wildcard":{"type":"string","enum":["*"],"description":"If used then this property should appear as the only child property\n* \"*\" - All users are allowed\n"},"users":{"type":"array","description":"Set of users ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Set of group ids","items":{"type":"string"}},"services":{"type":"array","description":"set of services to initiate transactions","items":{"type":"string"}}}},"transactionType":{"type":"string","enum":["TRANSFER","CONTRACT_CALL","APPROVE","MINT","BURN","SUPPLY","REDEEM","STAKE","RAW","TYPED_MESSAGE"],"description":"Defines the type of transaction to which the rule applies.\n * TRANSFER - Default. Transfers funds from one account to another\n * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.\n * APPROVE - Allows a smart contract to withdraw from a designated wallet.\n * MINT - Perform a mint operation (increase supply) on a supported token\n * BURN - Perform a burn operation (reduce supply) on a supported token\n * SUPPLY - Use for DeFi to lend assets\n * REDEEM - Use for DeFi to get lending back\n * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.\n * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.\n * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.\n"},"designatedSigner":{"type":"string","description":"(deprecated - replaced by \"designatedSigners\") Id representing the user who signs transactions that match a specific rule","deprecated":true},"designatedSigners":{"type":"object","description":"Set of ids representing the users who signs transactions that match a specific rule","properties":{"users":{"type":"array","description":"Set of users ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Set of group ids","items":{"type":"string"}}}},"type":{"type":"string","enum":["TRANSFER"],"description":"Policy rule type"},"action":{"type":"string","enum":["ALLOW","BLOCK","2-TIER"],"description":"Defines what occurs when a transaction meets the rule's criteria\n* ALLOW - The transaction goes through and can be signed without requiring additional approvals\n* BLOCK - The transaction is automatically blocked\n* 2-TIER - Only these users or user groups can approve \n If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through\n The list of entities are set is \"authorizationGroups\" field\n"},"asset":{"type":"string","description":"Defines the type of asset being transacted, options are\n* \"*\" - All assets\n* Specific asset\n"},"srcType":{"description":"(deprecated - replaced by \"src\") source account type"},"srcSubType":{"description":"(deprecated - replaced by \"src\") source sub account type"},"srcId":{"description":"(deprecated - replaced by \"src\") source account id"},"src":{"type":"object","description":"Defines source accounts the rule allows transfers to originate from","properties":{"ids":{"type":"array","description":"A set of ids","items":{"type":"array","description":"A set of ids in a tuple format","items":{"type":"string"},"minItems":1,"maxItems":3}}}},"dstType":{"description":"(deprecated - replaced by \"dst\") destination account type"},"dstSubType":{"description":"(deprecated - replaced by \"dst\") destination sub account type"},"dstId":{"description":"(deprecated - replaced by \"dst\") destination account id"},"dst":{"type":"object","description":"Defines the destination accounts the rule allows transfers to","properties":{"ids":{"type":"array","description":"A set of ids","items":{"type":"array","description":"A set of ids in a tuple format","items":{"type":"string"},"minItems":1,"maxItems":3}}}},"dstAddressType":{"type":"string","enum":["WHITELISTED","ONE_TIME","*"],"description":"Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.\nBy default, you can only transfer to an external address after it’s whitelisted.\n * WHITELISTED - Can only be sent to whitelisted addresses.\n * ONE_TIME - Can only be sent to non-whitelisted external addresses.\n * \"*\" - can be sent to whitelisted addresses or non-whitelisted external\n"},"amountCurrency":{"type":"string","enum":["USD","EUR","NATIVE"],"description":"* USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.\n* EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.\n* NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.\n"},"amountScope":{"type":"string","enum":["SINGLE_TX","TIMEFRAME"],"description":"* SINGLE_TX - limit applies to a single transaction\n* TIMEFRAME - limit applies to all transactions within the defined time period\n"},"amount":{"type":"number","description":"Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)"},"periodSec":{"type":"number","description":"Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.\nWhen the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.\n"},"authorizers":{"type":"array","description":"(deprecated - replaced by \"authorizationGroups\") Allowed entities which can approves a transaction","deprecated":true,"items":{"type":"string"}},"authorizersCount":{"type":"number","description":"(deprecated - replaced by \"authorizationGroups\") Min amount of entities which are needed to approve a transaction","deprecated":true},"authorizationGroups":{"type":"object","description":"Defines the transaction approval terms","properties":{"logic":{"type":"string","enum":["AND","OR"],"description":"* AND - requires approval of all authorization groups\n* OR - requires approval of at least one of the authorization groups\n"},"allowOperatorAsAuthorizer":{"type":"boolean","description":"Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction"},"groups":{"type":"array","description":"Groups of entities which can approve the transaction","items":{"type":"object","properties":{"users":{"type":"array","description":"User ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Group ids","items":{"type":"string"}},"th":{"type":"number","description":"Represents the min amount of entities which are required to approve the transaction, default is 1."}}}}}},"amountAggregation":{"type":"object","description":"Defines the method by which the Policy Engine calculates accumulation.\nIt uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.\n","properties":{"operators":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"},"srcTransferPeers":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"},"dstTransferPeers":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"}}},"rawMessageSigning":{"type":"object","description":"Raw message signing configuration","properties":{"algorithm":{"type":"string"},"derivationPath":{"type":"object","properties":{"path":{"type":"array","items":{"type":"number"}}}}}},"applyForApprove":{"type":"boolean","description":"Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)"},"applyForTypedMessage":{"type":"boolean","description":"Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)"},"externalDescriptor":{"type":"string","description":"A unique id identifying the rule"}},"required":["type","action","asset","amountCurrency","amountScope","amount","periodSec","externalDescriptor"]}},"checkResult":{"type":"object","description":"Policy rules validation result","properties":{"errors":{"type":"number","description":"Number of errors"},"result":{"type":"array","description":"A set of validation results","items":{"type":"object","description":"The rule validation result","properties":{"index":{"type":"number","description":"Rule index number in the policy"},"status":{"type":"string","enum":["ok","failure"],"description":"Validation status"},"errors":{"type":"array","description":"A set of rule validation error objects","items":{"type":"object","description":"Rule validation result error","properties":{"errorMessage":{"type":"string","description":"Error message"},"errorCode":{"type":"number","description":"error code"},"errorCodeName":{"type":"string","description":"error code name"},"errorField":{"type":"string","enum":["operator","operators","authorizationGroups","designatedSigner","designatedSigners","contractMethods","amountAggregation","src","dst"],"description":"The field which the error relates to\n* operator - transaction initiator\n* operators - transaction initiators\n* authorizationGroups - transaction authorizer groups\n* designatedSigner - transaction signer\n* designatedSigners - transaction signers\n* contractMethods - contract methods\n* amountAggregation - transaction amount aggregation configuration\n* src - transaction source asset configuration\n* dst - transaction destination asset configuration\n"}},"required":["errorMessage","errorCode","errorCodeName","errorField"]}}},"required":["index","status","errors"]}}},"required":["errors","result"]},"metadata":{"type":"object","description":"Policy related metadata","properties":{"editedBy":{"type":"string","description":"The user id of the user who last edited the policy"},"editedAt":{"type":"string","description":"The timestamp of the last edit of the policy"},"publishedBy":{"type":"string","description":"The user id of the user who last published the policy"},"publishedAt":{"type":"string","description":"The timestamp of the last publish of the policy"}}}},"required":["status","rules","checkResult","metadata"]},"description":"Send publish request for a certain draft id.\n\nSend publish request of certain draft id and returns the response.
\n**Note:** These endpoints are currently in beta and might be subject to changes.\nIf you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"put","path":"/tap/draft","name":"tap_draft_put","parameters":[{}],"output":{"type":"object","description":"Draft validation","properties":{"draftResponse":{"type":"object","description":"Response object for draft operations","properties":{"status":{"type":"string","description":"Operation status"},"rules":{"type":"array","description":"Draft rules","items":{"type":"object","description":"Policy rule which is enforced on transactions","properties":{"operator":{"type":"string","description":"(deprecated - replaced by \"operators\") | Defines users who can initiate the type of transaction to which the rule applies. options are * \"*\" - All users are allowed * Specific User id","deprecated":true},"operators":{"type":"object","description":"Defines users/groups who can initiate the type of transaction to which the rule applies.","properties":{"wildcard":{"type":"string","enum":["*"],"description":"If used then this property should appear as the only child property\n* \"*\" - All users are allowed\n"},"users":{"type":"array","description":"Set of users ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Set of group ids","items":{"type":"string"}},"services":{"type":"array","description":"set of services to initiate transactions","items":{"type":"string"}}}},"transactionType":{"type":"string","enum":["TRANSFER","CONTRACT_CALL","APPROVE","MINT","BURN","SUPPLY","REDEEM","STAKE","RAW","TYPED_MESSAGE"],"description":"Defines the type of transaction to which the rule applies.\n * TRANSFER - Default. Transfers funds from one account to another\n * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.\n * APPROVE - Allows a smart contract to withdraw from a designated wallet.\n * MINT - Perform a mint operation (increase supply) on a supported token\n * BURN - Perform a burn operation (reduce supply) on a supported token\n * SUPPLY - Use for DeFi to lend assets\n * REDEEM - Use for DeFi to get lending back\n * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.\n * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.\n * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.\n"},"designatedSigner":{"type":"string","description":"(deprecated - replaced by \"designatedSigners\") Id representing the user who signs transactions that match a specific rule","deprecated":true},"designatedSigners":{"type":"object","description":"Set of ids representing the users who signs transactions that match a specific rule","properties":{"users":{"type":"array","description":"Set of users ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Set of group ids","items":{"type":"string"}}}},"type":{"type":"string","enum":["TRANSFER"],"description":"Policy rule type"},"action":{"type":"string","enum":["ALLOW","BLOCK","2-TIER"],"description":"Defines what occurs when a transaction meets the rule's criteria\n* ALLOW - The transaction goes through and can be signed without requiring additional approvals\n* BLOCK - The transaction is automatically blocked\n* 2-TIER - Only these users or user groups can approve \n If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through\n The list of entities are set is \"authorizationGroups\" field\n"},"asset":{"type":"string","description":"Defines the type of asset being transacted, options are\n* \"*\" - All assets\n* Specific asset\n"},"srcType":{"description":"(deprecated - replaced by \"src\") source account type"},"srcSubType":{"description":"(deprecated - replaced by \"src\") source sub account type"},"srcId":{"description":"(deprecated - replaced by \"src\") source account id"},"src":{"type":"object","description":"Defines source accounts the rule allows transfers to originate from","properties":{"ids":{"type":"array","description":"A set of ids","items":{"type":"array","description":"A set of ids in a tuple format","items":{"type":"string"},"minItems":1,"maxItems":3}}}},"dstType":{"description":"(deprecated - replaced by \"dst\") destination account type"},"dstSubType":{"description":"(deprecated - replaced by \"dst\") destination sub account type"},"dstId":{"description":"(deprecated - replaced by \"dst\") destination account id"},"dst":{"type":"object","description":"Defines the destination accounts the rule allows transfers to","properties":{"ids":{"type":"array","description":"A set of ids","items":{"type":"array","description":"A set of ids in a tuple format","items":{"type":"string"},"minItems":1,"maxItems":3}}}},"dstAddressType":{"type":"string","enum":["WHITELISTED","ONE_TIME","*"],"description":"Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.\nBy default, you can only transfer to an external address after it’s whitelisted.\n * WHITELISTED - Can only be sent to whitelisted addresses.\n * ONE_TIME - Can only be sent to non-whitelisted external addresses.\n * \"*\" - can be sent to whitelisted addresses or non-whitelisted external\n"},"amountCurrency":{"type":"string","enum":["USD","EUR","NATIVE"],"description":"* USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.\n* EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.\n* NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.\n"},"amountScope":{"type":"string","enum":["SINGLE_TX","TIMEFRAME"],"description":"* SINGLE_TX - limit applies to a single transaction\n* TIMEFRAME - limit applies to all transactions within the defined time period\n"},"amount":{"type":"number","description":"Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)"},"periodSec":{"type":"number","description":"Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.\nWhen the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.\n"},"authorizers":{"type":"array","description":"(deprecated - replaced by \"authorizationGroups\") Allowed entities which can approves a transaction","deprecated":true,"items":{"type":"string"}},"authorizersCount":{"type":"number","description":"(deprecated - replaced by \"authorizationGroups\") Min amount of entities which are needed to approve a transaction","deprecated":true},"authorizationGroups":{"type":"object","description":"Defines the transaction approval terms","properties":{"logic":{"type":"string","enum":["AND","OR"],"description":"* AND - requires approval of all authorization groups\n* OR - requires approval of at least one of the authorization groups\n"},"allowOperatorAsAuthorizer":{"type":"boolean","description":"Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction"},"groups":{"type":"array","description":"Groups of entities which can approve the transaction","items":{"type":"object","properties":{"users":{"type":"array","description":"User ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Group ids","items":{"type":"string"}},"th":{"type":"number","description":"Represents the min amount of entities which are required to approve the transaction, default is 1."}}}}}},"amountAggregation":{"type":"object","description":"Defines the method by which the Policy Engine calculates accumulation.\nIt uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.\n","properties":{"operators":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"},"srcTransferPeers":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"},"dstTransferPeers":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"}}},"rawMessageSigning":{"type":"object","description":"Raw message signing configuration","properties":{"algorithm":{"type":"string"},"derivationPath":{"type":"object","properties":{"path":{"type":"array","items":{"type":"number"}}}}}},"applyForApprove":{"type":"boolean","description":"Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)"},"applyForTypedMessage":{"type":"boolean","description":"Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)"},"externalDescriptor":{"type":"string","description":"A unique id identifying the rule"}},"required":["type","action","asset","amountCurrency","amountScope","amount","periodSec","externalDescriptor"]}},"draftId":{"type":"string","description":"Draft unique id"},"metadata":{"type":"object","description":"Policy related metadata","properties":{"editedBy":{"type":"string","description":"The user id of the user who last edited the policy"},"editedAt":{"type":"string","description":"The timestamp of the last edit of the policy"},"publishedBy":{"type":"string","description":"The user id of the user who last published the policy"},"publishedAt":{"type":"string","description":"The timestamp of the last publish of the policy"}}}},"required":["draftId","status","rules","metadata"]},"validation":{"type":"object","description":"Policy validation object","properties":{"status":{"type":"string","description":"Validation status"},"checkResult":{"type":"object","description":"Policy rules validation result","properties":{"errors":{"type":"number","description":"Number of errors"},"result":{"type":"array","description":"A set of validation results","items":{"type":"object","description":"The rule validation result","properties":{"index":{"type":"number","description":"Rule index number in the policy"},"status":{"type":"string","enum":["ok","failure"],"description":"Validation status"},"errors":{"type":"array","description":"A set of rule validation error objects","items":{"type":"object","description":"Rule validation result error","properties":{"errorMessage":{"type":"string","description":"Error message"},"errorCode":{"type":"number","description":"error code"},"errorCodeName":{"type":"string","description":"error code name"},"errorField":{"type":"string","enum":["operator","operators","authorizationGroups","designatedSigner","designatedSigners","contractMethods","amountAggregation","src","dst"],"description":"The field which the error relates to\n* operator - transaction initiator\n* operators - transaction initiators\n* authorizationGroups - transaction authorizer groups\n* designatedSigner - transaction signer\n* designatedSigners - transaction signers\n* contractMethods - contract methods\n* amountAggregation - transaction amount aggregation configuration\n* src - transaction source asset configuration\n* dst - transaction destination asset configuration\n"}},"required":["errorMessage","errorCode","errorCodeName","errorField"]}}},"required":["index","status","errors"]}}},"required":["errors","result"]}},"required":["status","checkResult"]}},"required":["draftResponse","validation"]},"description":"Update the draft with a new set of rules.\n\nUpdate the draft and return its validation.
\n**Note:** These endpoints are currently in beta and might be subject to changes.\nIf you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"},{"method":"post","path":"/tap/publish","name":"tap_publish_post","parameters":[{}],"output":{"type":"object","description":"Response object of the publish policy operation","properties":{"status":{"type":"string","enum":["SUCCESS","UNVALIDATED","INVALID_CONFIGURATION","PENDING","PENDING_CONSOLE_APPROVAL","AWAITING_QUORUM","UNHANDLED_ERROR"],"description":"* SUCCESS - success\n* UNVALIDATED - not validated yet\n* INVALID_CONFIGURATION - at least one rule is invalid\n* PENDING - pending approval\n* PENDING_CONSOLE_APPROVAL - pending approval from the console app\n* AWAITING_QUORUM - pending quorum approval\n* UNHANDLED_ERROR - unhandled error\n"},"rules":{"type":"array","items":{"type":"object","description":"Policy rule which is enforced on transactions","properties":{"operator":{"type":"string","description":"(deprecated - replaced by \"operators\") | Defines users who can initiate the type of transaction to which the rule applies. options are * \"*\" - All users are allowed * Specific User id","deprecated":true},"operators":{"type":"object","description":"Defines users/groups who can initiate the type of transaction to which the rule applies.","properties":{"wildcard":{"type":"string","enum":["*"],"description":"If used then this property should appear as the only child property\n* \"*\" - All users are allowed\n"},"users":{"type":"array","description":"Set of users ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Set of group ids","items":{"type":"string"}},"services":{"type":"array","description":"set of services to initiate transactions","items":{"type":"string"}}}},"transactionType":{"type":"string","enum":["TRANSFER","CONTRACT_CALL","APPROVE","MINT","BURN","SUPPLY","REDEEM","STAKE","RAW","TYPED_MESSAGE"],"description":"Defines the type of transaction to which the rule applies.\n * TRANSFER - Default. Transfers funds from one account to another\n * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.\n * APPROVE - Allows a smart contract to withdraw from a designated wallet.\n * MINT - Perform a mint operation (increase supply) on a supported token\n * BURN - Perform a burn operation (reduce supply) on a supported token\n * SUPPLY - Use for DeFi to lend assets\n * REDEEM - Use for DeFi to get lending back\n * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.\n * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.\n * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.\n"},"designatedSigner":{"type":"string","description":"(deprecated - replaced by \"designatedSigners\") Id representing the user who signs transactions that match a specific rule","deprecated":true},"designatedSigners":{"type":"object","description":"Set of ids representing the users who signs transactions that match a specific rule","properties":{"users":{"type":"array","description":"Set of users ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Set of group ids","items":{"type":"string"}}}},"type":{"type":"string","enum":["TRANSFER"],"description":"Policy rule type"},"action":{"type":"string","enum":["ALLOW","BLOCK","2-TIER"],"description":"Defines what occurs when a transaction meets the rule's criteria\n* ALLOW - The transaction goes through and can be signed without requiring additional approvals\n* BLOCK - The transaction is automatically blocked\n* 2-TIER - Only these users or user groups can approve \n If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through\n The list of entities are set is \"authorizationGroups\" field\n"},"asset":{"type":"string","description":"Defines the type of asset being transacted, options are\n* \"*\" - All assets\n* Specific asset\n"},"srcType":{"description":"(deprecated - replaced by \"src\") source account type"},"srcSubType":{"description":"(deprecated - replaced by \"src\") source sub account type"},"srcId":{"description":"(deprecated - replaced by \"src\") source account id"},"src":{"type":"object","description":"Defines source accounts the rule allows transfers to originate from","properties":{"ids":{"type":"array","description":"A set of ids","items":{"type":"array","description":"A set of ids in a tuple format","items":{"type":"string"},"minItems":1,"maxItems":3}}}},"dstType":{"description":"(deprecated - replaced by \"dst\") destination account type"},"dstSubType":{"description":"(deprecated - replaced by \"dst\") destination sub account type"},"dstId":{"description":"(deprecated - replaced by \"dst\") destination account id"},"dst":{"type":"object","description":"Defines the destination accounts the rule allows transfers to","properties":{"ids":{"type":"array","description":"A set of ids","items":{"type":"array","description":"A set of ids in a tuple format","items":{"type":"string"},"minItems":1,"maxItems":3}}}},"dstAddressType":{"type":"string","enum":["WHITELISTED","ONE_TIME","*"],"description":"Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.\nBy default, you can only transfer to an external address after it’s whitelisted.\n * WHITELISTED - Can only be sent to whitelisted addresses.\n * ONE_TIME - Can only be sent to non-whitelisted external addresses.\n * \"*\" - can be sent to whitelisted addresses or non-whitelisted external\n"},"amountCurrency":{"type":"string","enum":["USD","EUR","NATIVE"],"description":"* USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.\n* EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.\n* NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.\n"},"amountScope":{"type":"string","enum":["SINGLE_TX","TIMEFRAME"],"description":"* SINGLE_TX - limit applies to a single transaction\n* TIMEFRAME - limit applies to all transactions within the defined time period\n"},"amount":{"type":"number","description":"Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)"},"periodSec":{"type":"number","description":"Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.\nWhen the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.\n"},"authorizers":{"type":"array","description":"(deprecated - replaced by \"authorizationGroups\") Allowed entities which can approves a transaction","deprecated":true,"items":{"type":"string"}},"authorizersCount":{"type":"number","description":"(deprecated - replaced by \"authorizationGroups\") Min amount of entities which are needed to approve a transaction","deprecated":true},"authorizationGroups":{"type":"object","description":"Defines the transaction approval terms","properties":{"logic":{"type":"string","enum":["AND","OR"],"description":"* AND - requires approval of all authorization groups\n* OR - requires approval of at least one of the authorization groups\n"},"allowOperatorAsAuthorizer":{"type":"boolean","description":"Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction"},"groups":{"type":"array","description":"Groups of entities which can approve the transaction","items":{"type":"object","properties":{"users":{"type":"array","description":"User ids","items":{"type":"string"}},"usersGroups":{"type":"array","description":"Group ids","items":{"type":"string"}},"th":{"type":"number","description":"Represents the min amount of entities which are required to approve the transaction, default is 1."}}}}}},"amountAggregation":{"type":"object","description":"Defines the method by which the Policy Engine calculates accumulation.\nIt uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.\n","properties":{"operators":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"},"srcTransferPeers":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"},"dstTransferPeers":{"type":"string","enum":["PER_SINGLE_MATCH","ACROSS_ALL_MATCHES"],"description":"* PER_SINGLE_MATCH - Apply the limit to each listed entity\n* ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities\n"}}},"rawMessageSigning":{"type":"object","description":"Raw message signing configuration","properties":{"algorithm":{"type":"string"},"derivationPath":{"type":"object","properties":{"path":{"type":"array","items":{"type":"number"}}}}}},"applyForApprove":{"type":"boolean","description":"Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)"},"applyForTypedMessage":{"type":"boolean","description":"Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)"},"externalDescriptor":{"type":"string","description":"A unique id identifying the rule"}},"required":["type","action","asset","amountCurrency","amountScope","amount","periodSec","externalDescriptor"]}},"checkResult":{"type":"object","description":"Policy rules validation result","properties":{"errors":{"type":"number","description":"Number of errors"},"result":{"type":"array","description":"A set of validation results","items":{"type":"object","description":"The rule validation result","properties":{"index":{"type":"number","description":"Rule index number in the policy"},"status":{"type":"string","enum":["ok","failure"],"description":"Validation status"},"errors":{"type":"array","description":"A set of rule validation error objects","items":{"type":"object","description":"Rule validation result error","properties":{"errorMessage":{"type":"string","description":"Error message"},"errorCode":{"type":"number","description":"error code"},"errorCodeName":{"type":"string","description":"error code name"},"errorField":{"type":"string","enum":["operator","operators","authorizationGroups","designatedSigner","designatedSigners","contractMethods","amountAggregation","src","dst"],"description":"The field which the error relates to\n* operator - transaction initiator\n* operators - transaction initiators\n* authorizationGroups - transaction authorizer groups\n* designatedSigner - transaction signer\n* designatedSigners - transaction signers\n* contractMethods - contract methods\n* amountAggregation - transaction amount aggregation configuration\n* src - transaction source asset configuration\n* dst - transaction destination asset configuration\n"}},"required":["errorMessage","errorCode","errorCodeName","errorField"]}}},"required":["index","status","errors"]}}},"required":["errors","result"]},"metadata":{"type":"object","description":"Policy related metadata","properties":{"editedBy":{"type":"string","description":"The user id of the user who last edited the policy"},"editedAt":{"type":"string","description":"The timestamp of the last edit of the policy"},"publishedBy":{"type":"string","description":"The user id of the user who last published the policy"},"publishedAt":{"type":"string","description":"The timestamp of the last publish of the policy"}}}},"required":["status","rules","checkResult","metadata"]},"description":"Send publish request for a set of policy rules.\n\nSend publish request of set of policy rules and returns the response.
\n**Note:** These endpoints are currently in beta and might be subject to changes.\nIf you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n"}],"errors":[{"method":"post","path":"/off_exchange/settlements/trader","messages":["Failed to escape $ref"]},{"method":"get","path":"/off_exchange/settlements/transactions","messages":["Failed to escape $ref"]}],"options":{"keyword":false,"separate":null}} \ No newline at end of file diff --git a/examples/positional/iamport.json b/examples/positional/iamport.json index 7c6a63f..35fda0b 100644 --- a/examples/positional/iamport.json +++ b/examples/positional/iamport.json @@ -1,6708 +1 @@ -{ - "openapi": "3.0.3", - "functions": [ - { - "method": "get", - "path": "/certifications/{imp_uid}", - "name": "certifications_getByImp_uid", - "parameters": [ - { - "type": "string", - "description": "대상 본인인증 정보의 " - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "imp_uid": { - "description": "아임포트가 발급해 준 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "서비스로부터의 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "name": { - "description": "본인인증대상자 성명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "gender": { - "description": "성별.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "birth": { - "description": "생년월일.\n\n리눅스 타임이 쓰인다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "birthday": { - "description": "생년월일, YYYYMMDD 형식.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^([0-9]{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$" - }, - "foreigner": { - "type": "boolean", - "description": "외국인 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "phone": { - "description": "본인인증 대상자 핸드폰 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "carrier": { - "type": "string", - "enum": [ - "SKT", - "KT", - "LGT" - ], - "description": "본인인증 대상자 통신사 코드.", - "x-typia-required": true, - "x-typia-optional": false - }, - "certified": { - "type": "boolean", - "description": "OTP 인증 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "certified_at": { - "description": "OTP 인증 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "unique_key": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "unique_in_site": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "description": "PG 제공자.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "origin": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "__otp": { - "description": "(테스트 전용) OTP 코드.\n\n오직 `fake-iamport-server` 에서만 쓰이는 속성으로써, 본인인증을 시뮬레이션할 때,\n어떠한 OTP 코드가 발급되었는 지를 확인하기 위하여 사용된다. 이를 이용하여\n{@link functional.certifications.otp.confirm } 함수를 호출하면, 본인인증을 완료할\n수 있다.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - } - }, - "required": [ - "imp_uid", - "merchant_uid", - "name", - "gender", - "birth", - "birthday", - "foreigner", - "phone", - "carrier", - "certified", - "certified_at", - "unique_key", - "unique_in_site", - "pg_tid", - "pg_provider", - "origin" - ], - "description": "본인 인증 내역.\n\n`IIamportCertification` 은 아임포트의 본인인증 정보를 형상화한 자료구조 인터페이스이다.\n\n단, `IIamportCertification` 레코드의 존재가 곧 본인인증의 완결을 뜻하는 것은 아니다.\n{@link IIamportCertification.certified } 값이 `true` 여야만이 비로소, 본인인증\n대상자가 자신의 핸드폰 번호로 전송된 OTP 를 아임포트의 본인인증 팝업창에 정확히 적어,\n본인인증을 완료했음을 의미한다.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "본인인증 정보 열람하기.\n\n`certiciations.at` 은 본인인증 정보를 열람할 때 사용하는 API 함수이다.\n\n다만 이 API 함수를 통하여 열람한 본인인증 정보 {@link IIamportCertification } 이\n곧 OTP 인증까지 마쳐 본인인증을 모두 마친 레코드라는 보장은 없다. 본인인증의 완결\n여부는 오직, {@link IIamportCertification.certified } 값을 직접 검사해봐야만 알\n수 있기 때문이다." - }, - { - "method": "delete", - "path": "/certifications/{imp_uid}", - "name": "certifications_eraseByImp_uid", - "parameters": [ - { - "type": "string", - "description": "대상 본인인증 정보의 " - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "imp_uid": { - "description": "아임포트가 발급해 준 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "서비스로부터의 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "name": { - "description": "본인인증대상자 성명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "gender": { - "description": "성별.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "birth": { - "description": "생년월일.\n\n리눅스 타임이 쓰인다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "birthday": { - "description": "생년월일, YYYYMMDD 형식.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^([0-9]{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$" - }, - "foreigner": { - "type": "boolean", - "description": "외국인 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "phone": { - "description": "본인인증 대상자 핸드폰 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "carrier": { - "type": "string", - "enum": [ - "SKT", - "KT", - "LGT" - ], - "description": "본인인증 대상자 통신사 코드.", - "x-typia-required": true, - "x-typia-optional": false - }, - "certified": { - "type": "boolean", - "description": "OTP 인증 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "certified_at": { - "description": "OTP 인증 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "unique_key": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "unique_in_site": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "description": "PG 제공자.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "origin": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "__otp": { - "description": "(테스트 전용) OTP 코드.\n\n오직 `fake-iamport-server` 에서만 쓰이는 속성으로써, 본인인증을 시뮬레이션할 때,\n어떠한 OTP 코드가 발급되었는 지를 확인하기 위하여 사용된다. 이를 이용하여\n{@link functional.certifications.otp.confirm } 함수를 호출하면, 본인인증을 완료할\n수 있다.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - } - }, - "required": [ - "imp_uid", - "merchant_uid", - "name", - "gender", - "birth", - "birthday", - "foreigner", - "phone", - "carrier", - "certified", - "certified_at", - "unique_key", - "unique_in_site", - "pg_tid", - "pg_provider", - "origin" - ], - "description": "본인 인증 내역.\n\n`IIamportCertification` 은 아임포트의 본인인증 정보를 형상화한 자료구조 인터페이스이다.\n\n단, `IIamportCertification` 레코드의 존재가 곧 본인인증의 완결을 뜻하는 것은 아니다.\n{@link IIamportCertification.certified } 값이 `true` 여야만이 비로소, 본인인증\n대상자가 자신의 핸드폰 번호로 전송된 OTP 를 아임포트의 본인인증 팝업창에 정확히 적어,\n본인인증을 완료했음을 의미한다.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "본인인증 정보 삭제하기." - }, - { - "method": "post", - "path": "/certifications/otp/request", - "name": "certifications_otp_request_post", - "parameters": [ - { - "type": "object", - "properties": { - "name": { - "description": "본인인증대상자 성명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "phone": { - "description": "본인인증 대상자 핸드폰 번호.\n\n핸드폰 번호에 \"-\" 값이 들어가던 아니던 상관 없음.\n\n다만, 내부적으로는 \"-\" 값을 제거하여 처리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "birth": { - "description": "생년월일.\n\nYYYYMMDD 형식.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^([0-9]{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$" - }, - "gender_digit": { - "description": "주민등록 뒷부분 첫 자리.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "carrier": { - "type": "string", - "enum": [ - "SKT", - "KT", - "LGT" - ], - "description": "본인인증 대상자 통신사 코드.", - "x-typia-required": true, - "x-typia-optional": false - }, - "is_mvno": { - "type": "boolean", - "description": "알뜰폰 여부.", - "x-typia-required": false, - "x-typia-optional": true - }, - "commpany": { - "description": "가맹점 서비스 명칭 또는 domain URL.\n\nKISA 에서 대상자에게 발송하는 SMS에 안내될 서비스 명칭.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "merchant_uid": { - "description": "귀사 서비스에서의 본인인증 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "pg": { - "description": "PG 사 구분자.\n\n다날 상점아이디를 2개 이상 동시에 사용하시려는 경우에 설정하면 된다.\n\n**danal.{상점아이디}** 형태로 지정.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - } - }, - "required": [ - "name", - "phone", - "birth", - "gender_digit", - "carrier" - ], - "description": "본인 인증 입력 정보.", - "x-typia-jsDocTags": [] - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "imp_uid": { - "description": "본인인증정보의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "imp_uid" - ], - "description": "본인인증 정보의 접근자 구조체.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "본인인증 요청하기.\n\n`certifications.otp.request` 는 아임포트 서버에 본인인증을 요청하는 API 함수이다.\n이 API 를 호출하면 본인인증 대상자의 핸드폰으로 OTP 문자가 전송되며, 본인인증\n대상자가 {@link certifications.otp.confirm } 을 통하여 이 OTP 번호를 정확히\n입력함으로써, 본인인증이 완결된다.\n\n또한 본인인증 대상자가 자신의 핸드폰으로 전송된 OTP 문자를 입력하기 전에도,\n여전히해당 본인인증 내역은 {@link certifications.at } 함수를 통하여 조회할 수 있다.\n다만, 이 때 리턴되는 {@link IIamportCertification } 에서 인증의 완결 여부를\n지칭하는 {@link IIamportCertification.certified } 값은 `false` 이다." - }, - { - "method": "post", - "path": "/certifications/otp/confirm/{imp_uid}", - "name": "certifications_otp_confirm_postByImp_uid", - "parameters": [ - { - "type": "string", - "description": "대상 본인인증 정보의 " - }, - { - "type": "object", - "properties": { - "otp": { - "description": "SMS 로 전송된 본인인증 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "otp" - ], - "description": "본인인증 승인을 위한 입력 정보.", - "x-typia-jsDocTags": [] - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "imp_uid": { - "description": "아임포트가 발급해 준 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "서비스로부터의 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "name": { - "description": "본인인증대상자 성명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "gender": { - "description": "성별.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "birth": { - "description": "생년월일.\n\n리눅스 타임이 쓰인다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "birthday": { - "description": "생년월일, YYYYMMDD 형식.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^([0-9]{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$" - }, - "foreigner": { - "type": "boolean", - "description": "외국인 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "phone": { - "description": "본인인증 대상자 핸드폰 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "carrier": { - "type": "string", - "enum": [ - "SKT", - "KT", - "LGT" - ], - "description": "본인인증 대상자 통신사 코드.", - "x-typia-required": true, - "x-typia-optional": false - }, - "certified": { - "type": "boolean", - "description": "OTP 인증 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "certified_at": { - "description": "OTP 인증 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "unique_key": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "unique_in_site": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "description": "PG 제공자.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "origin": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "__otp": { - "description": "(테스트 전용) OTP 코드.\n\n오직 `fake-iamport-server` 에서만 쓰이는 속성으로써, 본인인증을 시뮬레이션할 때,\n어떠한 OTP 코드가 발급되었는 지를 확인하기 위하여 사용된다. 이를 이용하여\n{@link functional.certifications.otp.confirm } 함수를 호출하면, 본인인증을 완료할\n수 있다.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - } - }, - "required": [ - "imp_uid", - "merchant_uid", - "name", - "gender", - "birth", - "birthday", - "foreigner", - "phone", - "carrier", - "certified", - "certified_at", - "unique_key", - "unique_in_site", - "pg_tid", - "pg_provider", - "origin" - ], - "description": "본인 인증 내역.\n\n`IIamportCertification` 은 아임포트의 본인인증 정보를 형상화한 자료구조 인터페이스이다.\n\n단, `IIamportCertification` 레코드의 존재가 곧 본인인증의 완결을 뜻하는 것은 아니다.\n{@link IIamportCertification.certified } 값이 `true` 여야만이 비로소, 본인인증\n대상자가 자신의 핸드폰 번호로 전송된 OTP 를 아임포트의 본인인증 팝업창에 정확히 적어,\n본인인증을 완료했음을 의미한다.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "본인인증 시 발급된 OTP 코드 입력하기.\n\n`certifications.otp.confirm` 는 {@link certifications.otp.request } 를 통하여\n발급된 본인인증 건에 대하여, 본인인증 대상자의 휴대폰으로 전송된 OTP 번호를\n검증하고, 입력한 OTP 번호가 맞거든 해당 본인인증 건을 승인하여 완료 처리해주는\nAPI 함수이다.\n\n이처럼 본인인증을 완료하거든, 해당 본인인증 건 {@link IIamportCertification } 의\n{@link IIamportCertification.certified } 값이 비로소 `true` 로 변경되어,\n비로소 완결된다." - }, - { - "method": "post", - "path": "/internal/webhook", - "name": "internal_webhook_post", - "parameters": [ - { - "type": "object", - "properties": { - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ], - "description": "현재 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "imp_uid", - "merchant_uid", - "status" - ], - "description": "웹훅 데이터.", - "x-typia-jsDocTags": [] - } - ], - "description": "웹훅 이벤트 더미 리스너.\n\n`internal.webhook` 은 실제 아임포트의 서버에는 존재하지 않는 API 로써,\n`fake-impoart-server` 의 {@link Configuration.WEBHOOK_URL } 에 아무런 URL 을 설정하지\n않으면, `fake-iamport-server` 로부터 발생하는 모든 종류의 웹훅 이벤트는 이 곳으로 전달되어\n무의미하게 사라진다.\n\n따라서 `fake-iamport-server` 를 사용하여 아임포트 서버와의 연동을 미리 검증코자 할 때는,\n반드시 {@link Configuration.WEBHOOK_URL } 를 설정하여 웹훅 이벤트가 귀하의 백엔드 서버로\n제대로 전달되도록 하자." - }, - { - "method": "get", - "path": "/internal/deposit/{imp_uid}", - "name": "internal_deposit_getByImp_uid", - "parameters": [ - { - "type": "string", - "description": "대상 결제의 " - } - ], - "description": "가상 계좌에 입금하기.\n\n`internal.deposit` 은 실제 아임포트 결제 서버에는 존재하지 않는 API 로써, 가상 계좌\n결제를 신청한 고객이, 이후 가상 계좌에 목표 금액을 입금하는 상황을 시뮬레이션 할 수 있는\n함수이다.\n\n즉, `internal.deposit` 는 고객이 스스로에게 가상으로 발급된 계좌에 입금을 하고, 그에 따라\n아임포트 서버에서 webhook 이벤트가 발생, 이를 귀하의 백엔드 서버로 전송하는 일련의 상황을\n시뮬레이션하기 위하여 설계된 테스트 함수다." - }, - { - "method": "get", - "path": "/payments/{imp_uid}", - "name": "payments_getByImp_uid", - "parameters": [ - { - "type": "string", - "description": "대상 결제 기록의 " - }, - { - "type": "object", - "properties": { - "extension": { - "type": "boolean", - "description": "페이팔의 경우, 이 값을 `true` 로 할 것.", - "x-typia-required": false, - "x-typia-optional": true - } - }, - "description": "결제 수단이 페이팔인 경우, 페이팔의 구매자 보호정책에 의해 결제 승인 시점에\nPending 상태를 만든 후, 내부 심사등을 통해 최종 결제 완료라고 변경함.\n\n`iamport` 의 기술적 이슈로 해당 상태를 status: failed 로 기록함. 추후\n페이팔에서 최종결제완료로 변경된 경우, `iamport` 에서 `paid` 로 변경 후,\n해당건에 대한 웹훅 발송. `iamport` 를 사용하는 고객사에서는, failed 로 이미\n처리된 결제건에 대한 paid 상태의 웹훅을 받는 문제점이 생김.\n\n이에, `iamport` 에서 제공하는 `/payment/{imp_uid}` 에 query-string 으로\n`extension=true` 옵션을 추가해야 함", - "x-typia-jsDocTags": [ - { - "name": "issue", - "text": [ - { - "text": "https://github.com/samchon/fake-iamport-server/issues/13", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Sangjin Han - https://github.com/ltnscp9028", - "kind": "text" - } - ] - } - ] - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "oneOf": [ - { - "type": "object", - "properties": { - "card_code": { - "description": "카드 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_name": { - "description": "카드 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "\\d{4}-\\d{4}-\\d{4}-\\d{4}" - }, - "card_quota": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "integer" - }, - "apply_num": { - "description": "카드사 승인번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pay_method": { - "type": "string", - "enum": [ - "card", - "samsung" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "card_code", - "card_name", - "card_number", - "card_quota", - "apply_num", - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "bank_code": { - "description": "은행 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "bank_name": { - "description": "은행 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pay_method": { - "type": "string", - "enum": [ - "trans" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "bank_code", - "bank_name", - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "계좌 이체 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "vbank_code": { - "description": "가상 계좌 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_name": { - "description": "가상 게좌 이름", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_num": { - "description": "가상 계좌 번호", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_holder": { - "description": "가상 계좌 예금주.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_date": { - "description": "가상 계좌 입금 만료 기한.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vbank_issued_at": { - "description": "가상 계좌 개설 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "pay_method": { - "type": "string", - "enum": [ - "vbank" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "vbank_code", - "vbank_name", - "vbank_num", - "vbank_holder", - "vbank_date", - "vbank_issued_at", - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "pay_method": { - "type": "string", - "enum": [ - "phone", - "kpay", - "kakaopay", - "payco", - "lpay", - "ssgpay", - "tosspay", - "cultureland", - "smartculture", - "happymoney", - "booknlife", - "point" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "결제 기본 (공통) 정보.", - "x-typia-jsDocTags": [] - } - ], - "description": "결제 정보.\n\n`IIamportPayment` 는 아임포트의 결제 정보를 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.pay_method === \"card\")\n payment.card_number; // payment be IIamportCardPayment\n```", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "결제 기록 열람하기.\n\n아임포트를 통하여 발생한 결제 기록을 열람한다." - }, - { - "method": "post", - "path": "/payments/cancel", - "name": "payments_cancel_post", - "parameters": [ - { - "type": "object", - "properties": { - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "description": "취소 금액, 부분 취소도 가능하다.\n\n누락시 전액 취소.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "checksum": { - "description": "취소 트랜잭션 수행 전, 현재 시점의 취소 가능한 잔액.\n\nAPI요청자가 기록하고 있는 취소가능 잔액과 아임포트가 기록하고 있는 취소가능 잔액이\n일치하는지 사전에 검증하고, 검증에 실패하면 트랜잭션을 수행하지 않는다.\n\n`null` 인 경우에는 검증 프로세스를 생략.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number", - "nullable": true - }, - "reason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "tax_free": { - "description": "취소요청금액 중 면세금액.", - "x-typia-jsDocTags": [ - { - "name": "default", - "text": [ - { - "text": "0", - "kind": "text" - } - ] - } - ], - "x-typia-required": false, - "x-typia-optional": true, - "type": "number", - "default": 0 - }, - "refund_holder": { - "description": "환불계좌 예금주.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "refund_bank": { - "description": "환불계좌 은행 코드.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "refund_account": { - "description": "환불계좌 계좌번호.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "refund_tel": { - "description": "환불계좌 예금주 연락처", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - } - }, - "required": [ - "imp_uid", - "merchant_uid", - "checksum", - "reason" - ], - "description": "결제 취소 입력 정보.", - "x-typia-jsDocTags": [] - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "oneOf": [ - { - "type": "object", - "properties": { - "card_code": { - "description": "카드 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_name": { - "description": "카드 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "\\d{4}-\\d{4}-\\d{4}-\\d{4}" - }, - "card_quota": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "integer" - }, - "apply_num": { - "description": "카드사 승인번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pay_method": { - "type": "string", - "enum": [ - "card", - "samsung" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "card_code", - "card_name", - "card_number", - "card_quota", - "apply_num", - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "bank_code": { - "description": "은행 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "bank_name": { - "description": "은행 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pay_method": { - "type": "string", - "enum": [ - "trans" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "bank_code", - "bank_name", - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "계좌 이체 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "vbank_code": { - "description": "가상 계좌 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_name": { - "description": "가상 게좌 이름", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_num": { - "description": "가상 계좌 번호", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_holder": { - "description": "가상 계좌 예금주.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_date": { - "description": "가상 계좌 입금 만료 기한.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vbank_issued_at": { - "description": "가상 계좌 개설 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "pay_method": { - "type": "string", - "enum": [ - "vbank" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "vbank_code", - "vbank_name", - "vbank_num", - "vbank_holder", - "vbank_date", - "vbank_issued_at", - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "pay_method": { - "type": "string", - "enum": [ - "phone", - "kpay", - "kakaopay", - "payco", - "lpay", - "ssgpay", - "tosspay", - "cultureland", - "smartculture", - "happymoney", - "booknlife", - "point" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "결제 기본 (공통) 정보.", - "x-typia-jsDocTags": [] - } - ], - "description": "결제 정보.\n\n`IIamportPayment` 는 아임포트의 결제 정보를 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.pay_method === \"card\")\n payment.card_number; // payment be IIamportCardPayment\n```", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "결제 취소하기.\n\n만약 가상 계좌를 통한 결제였다면, 반드시 환불 계좌 정보를 입력해줘야 한다." - }, - { - "method": "get", - "path": "/receipts/{imp_uid}", - "name": "receipts_getByImp_uid", - "parameters": [ - { - "type": "string", - "description": "귀속 결제의 " - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "imp_uid": { - "description": "귀속 결제의 {@link IIamportPayment.imp_uid }.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_uid": { - "description": "현금 영수증의 고유 식별자 ID.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "apply_num": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "person", - "company" - ], - "description": "현금영수증 발행 타입 (대상)." - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "receipt_url": { - "description": "현금영수증 조회 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "applied_at": { - "description": "현금영수증 발행 시간.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "현금영수증 취소 시간.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - } - }, - "required": [ - "imp_uid", - "receipt_uid", - "apply_num", - "type", - "amount", - "vat", - "receipt_url", - "applied_at", - "cancelled_at" - ], - "description": "현금 영수증 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "현금 영수증 조회하기." - }, - { - "method": "post", - "path": "/receipts/{imp_uid}", - "name": "receipts_postByImp_uid", - "parameters": [ - { - "type": "string", - "description": "귀속 결제의 " - }, - { - "type": "object", - "properties": { - "imp_uid": { - "description": "귀속 결제의 {@link IIamportPayment.imp_uid }.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "identifier": { - "description": "현금영수증 발생대상 식별정보.\n\n - 국세청현금영수증카드\n - 휴대폰번호\n - 주민등록번호\n - 사업자등록번호", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "identifier_type": { - "type": "string", - "enum": [ - "phone", - "person", - "business", - "taxcard" - ], - "description": "현금영수증 발행대상 유형.\n\n - person: 주민등록번호\n - business: 사업자등록번호\n - phone: 휴대폰번호\n - taxcard: 국세청현금영수증카드\n\n일부 PG 사의 경우 이 항목이 없어 된다는데, 어지간하면 그냥 쓰기 바람.", - "x-typia-required": false, - "x-typia-optional": true - }, - "type": { - "type": "string", - "enum": [ - "person", - "company" - ], - "description": "현금영수증 발행 타입 (대상).\n\n누락시 person 이 사용됨.", - "x-typia-required": false, - "x-typia-optional": true - }, - "buyer_name": { - "description": "구매자 이름.\n\n형금영수증 발행건 사후 추적을 위해 가급 입력하기 바람.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_email": { - "description": "구매자 이메일.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_tel": { - "description": "구매자 전화번호.\n\n현금영수증 발행건 사후 추적을 위해 가급 입력하기 바람.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "tax_free": { - "description": "면세 금액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - } - }, - "required": [ - "imp_uid", - "identifier" - ], - "description": "현금영수증 입력 정보.", - "x-typia-jsDocTags": [] - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "imp_uid": { - "description": "귀속 결제의 {@link IIamportPayment.imp_uid }.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_uid": { - "description": "현금 영수증의 고유 식별자 ID.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "apply_num": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "person", - "company" - ], - "description": "현금영수증 발행 타입 (대상)." - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "receipt_url": { - "description": "현금영수증 조회 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "applied_at": { - "description": "현금영수증 발행 시간.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "현금영수증 취소 시간.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - } - }, - "required": [ - "imp_uid", - "receipt_uid", - "apply_num", - "type", - "amount", - "vat", - "receipt_url", - "applied_at", - "cancelled_at" - ], - "description": "현금 영수증 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "현금 영수증 발행하기." - }, - { - "method": "delete", - "path": "/receipts/{imp_uid}", - "name": "receipts_eraseByImp_uid", - "parameters": [ - { - "type": "string", - "description": "귀속 결제의 " - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "imp_uid": { - "description": "귀속 결제의 {@link IIamportPayment.imp_uid }.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_uid": { - "description": "현금 영수증의 고유 식별자 ID.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "apply_num": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "person", - "company" - ], - "description": "현금영수증 발행 타입 (대상)." - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "receipt_url": { - "description": "현금영수증 조회 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "applied_at": { - "description": "현금영수증 발행 시간.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "현금영수증 취소 시간.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - } - }, - "required": [ - "imp_uid", - "receipt_uid", - "apply_num", - "type", - "amount", - "vat", - "receipt_url", - "applied_at", - "cancelled_at" - ], - "description": "현금 영수증 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "현금 영수증 취소하기." - }, - { - "method": "post", - "path": "/users/getToken", - "name": "users_getToken_post", - "parameters": [ - { - "type": "object", - "properties": { - "imp_key": { - "description": "API 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "imp_secret": { - "description": "Secret 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "imp_key", - "imp_secret" - ], - "description": "아임포트에서 부여해 준 API 및 secret 키.", - "x-typia-jsDocTags": [] - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "now": { - "description": "토큰 발행 시간.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "expired_at": { - "description": "토큰 만료 시간.\n\n리눅스 타임이 기준이며, 이를 JS 에서 사용하려거든, 아래와 같이 변환해야 한다.\n\n```typescript\nnew Date(user.expired_at * 1_000);\n```", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "access_token": { - "description": "유저 인증 토큰.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "now", - "expired_at", - "access_token" - ], - "description": "아임포트 유저 인증 정보.\n\n아임포트는 고객사에게 API 및 secret 키 정보, {@link IIamportUser.IAccessor } 를 발급해준다.\n\n하지만 이를 곧장 아임포트의 유저 인증에 사용할 수는 없고, 해당 API 및 secret 키를 토대로 유저\n인증 토큰을 발급받아야 하는데, 이 유저 인증 토큰에는 하필이면 만로 시간이라는 게 존재한다.\n`IIamportUser` 는 바로 이러한 유저 인증 토큰 및 그것의 만료 시간을 형상화한 자료구조\n인터페이스이다.\n\n더하여 이처럼 만료 시간이 존재하는 아임포트의 유저 인증 토큰의 특성상, 이것의 만료 시간이\n초과되지 않도록 관리하는 것은 매우 힘든 일이다. 이에 `iamport-server-api` 에서는 아임포트\n유저 인증 토큰이 만료될 때마다 자동 갱신해주는, {@link IamportConnector } 클래스를 제공한다.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "유저 인증 토큰 발행하기.\n\n아임포트에 가입하여 부여받은 API 및 secret 키를 토대로, 유저 인증 토큰을 발행한다.\n\n단, 아임포트가 발급해주는 유저 인증 토큰에는 유효 시간 {@link IIamportUser.expired_at }\n이 있어, 해당 시간이 지나거든 기 발급 토큰이 만료되어 더 이상 쓸 수 없게 된다. 때문에\n아임포트의 이러한 시간 제한에 구애받지 않고 자유로이 아임포트의 API 를 이용하고 싶다면,\n`iamport-server-api` 에서 제공해주는 {@link IamportConnector } 를 활용하도록 하자." - }, - { - "method": "post", - "path": "/vbanks", - "name": "vbanks_post", - "parameters": [ - { - "type": "object", - "properties": { - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "description": "총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vbank_code": { - "description": "가상계좌 은행 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_due": { - "description": "가상계좌 입금기한, 유닉스 타임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vbank_holder": { - "description": "예금주.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_name": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_email": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_tel": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_addr": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_postcode": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "pg": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "notice_url": { - "description": "가상 계좌 입금 정보를 수신할 URL.\n\n누락시 기본 웹훅 URL 사용.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "custom_data": { - "description": "커스텀 데이터, 자유롭게 사용 가능.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "pg_api_key": { - "description": "[이니시스 전용] 가맹점 콘솔에서 확인한 API 값.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - } - }, - "required": [ - "merchant_uid", - "amount", - "vbank_code", - "vbank_due", - "vbank_holder" - ], - "description": "가상 계좌 결제 입력 정보.\n\n가상 계좌를 임의 생성할 수 있다.\n\n단, 일부 PG 사 혹은 `fake-iamport-server` 만 가능.\n\n - 세틀뱅크\n - 나이스페이먼츠\n - KG이니시스", - "x-typia-jsDocTags": [] - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "vbank_code": { - "description": "가상 계좌 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_name": { - "description": "가상 게좌 이름", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_num": { - "description": "가상 계좌 번호", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_holder": { - "description": "가상 계좌 예금주.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_date": { - "description": "가상 계좌 입금 만료 기한.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vbank_issued_at": { - "description": "가상 계좌 개설 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "pay_method": { - "type": "string", - "enum": [ - "vbank" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "vbank_code", - "vbank_name", - "vbank_num", - "vbank_holder", - "vbank_date", - "vbank_issued_at", - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "가상 계좌 발급하기." - }, - { - "method": "put", - "path": "/vbanks", - "name": "vbanks_put", - "parameters": [ - { - "type": "object", - "properties": { - "imp_uid": { - "description": "대상 결제 기록의 {@link IIamportPayment.imp_uid }.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "description": "수정할 결제 금액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "vbank_due": { - "description": "수정할 가상계좌 입금 기한.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - } - }, - "required": [ - "imp_uid" - ], - "description": "가상 계좌 결제의 수정 입력 정보.\n\n아직 입금되지 않은 가상계좌의 입금기한 또는 입금금액을 수정할 수 있다.\n\n다만, 세틀뱅크 혹은 `fake-iamport-server` 만 가능.", - "x-typia-jsDocTags": [] - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "vbank_code": { - "description": "가상 계좌 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_name": { - "description": "가상 게좌 이름", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_num": { - "description": "가상 계좌 번호", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_holder": { - "description": "가상 계좌 예금주.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_date": { - "description": "가상 계좌 입금 만료 기한.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vbank_issued_at": { - "description": "가상 계좌 개설 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "pay_method": { - "type": "string", - "enum": [ - "vbank" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "vbank_code", - "vbank_name", - "vbank_num", - "vbank_holder", - "vbank_date", - "vbank_issued_at", - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "가상 계좌 편집하기." - }, - { - "method": "get", - "path": "/subscribe/customers/{customer_uid}", - "name": "subscribe_customers_getByCustomer_uid", - "parameters": [ - { - "type": "string", - "description": "고객 (간편 결제 카드) 식별자 키" - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_code": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_number": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_type": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "inserted": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "updated": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "customer_uid": { - "description": "고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "pg_provider", - "pg_id", - "card_name", - "card_code", - "card_number", - "card_type", - "customer_name", - "customer_tel", - "customer_email", - "customer_addr", - "customer_postcode", - "inserted", - "updated", - "customer_uid" - ], - "description": "간편 결제 카드 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "간편 결제 카드 정보 조회하기.\n\n`subscribe.customers.at` 은 고객이 {@link store } 나 혹은 아임포트가 제공하는\n간편 결제 카드 등록 창을 이용하여 저장한 간편 결제 카드 정보를 조회하는 API\n함수이다." - }, - { - "method": "post", - "path": "/subscribe/customers/{customer_uid}", - "name": "subscribe_customers_postByCustomer_uid", - "parameters": [ - { - "type": "string", - "description": "고객 (간편 결제 카드) 식별자 키" - }, - { - "type": "object", - "properties": { - "card_number": { - "description": "카드 번호.\n\n형식: XXXX-XXXX-XXXX-XXXX", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "\\d{4}-\\d{4}-\\d{4}-\\d{4}" - }, - "expiry": { - "description": "카드 유효기간.\n\n형식: YYYY-MM", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^([0-9]{4})-(0[1-9]|1[012])$" - }, - "birth": { - "description": "생년월일 YYMMDD 또는 사업자등록번호 10자리.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^(([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01]))|(\\d{10})$" - }, - "pwd_2digit": { - "description": "카드 비밀번호 앞 두 자리.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "pattern": "\\d{2}" - }, - "cvc": { - "description": "카드 인증번호 (카드 뒷면 3 자리).", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "pattern": "\\d{2}" - }, - "customer_name": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customer_tel": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customer_email": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "format": "email" - }, - "customr_addr": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customer_postcode": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customer_uid": { - "description": "고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "card_number", - "expiry", - "birth", - "customer_uid" - ], - "description": "간편 결제 카드 입력 정보.", - "x-typia-jsDocTags": [] - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_code": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_number": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_type": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "inserted": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "updated": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "customer_uid": { - "description": "고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "pg_provider", - "pg_id", - "card_name", - "card_code", - "card_number", - "card_type", - "customer_name", - "customer_tel", - "customer_email", - "customer_addr", - "customer_postcode", - "inserted", - "updated", - "customer_uid" - ], - "description": "간편 결제 카드 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "간편 결제 카드 등록하기.\n\n`subscribe.customers.stoer` 는 고객이 자신의 카드를 서버에 등록해두고, 매번 결제가\n필요할 때마다 카드 정보를 반복 입력하는 일 없이, 간편하게 결제를 진행하고자 할 때\n사용하는 API 함수이다.\n\n참고로 `subscribe.customers.store` 는 클라이언트 어플리케이션이 아임포트가 제공하는\n간편 결제 카드 등록 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는\n일은 없을 것이다. 다만, 고객이 간편 결제 카드를 등록하는 상황을 시뮬레이션하기 위하여,\n테스트 자동화 프로그램 수준에서 사용될 수는 있다." - }, - { - "method": "delete", - "path": "/subscribe/customers/{customer_uid}", - "name": "subscribe_customers_eraseByCustomer_uid", - "parameters": [ - { - "type": "string", - "description": "고객 (간편 결제 카드) 식별자 키" - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_code": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_number": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_type": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "inserted": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "updated": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "customer_uid": { - "description": "고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "pg_provider", - "pg_id", - "card_name", - "card_code", - "card_number", - "card_type", - "customer_name", - "customer_tel", - "customer_email", - "customer_addr", - "customer_postcode", - "inserted", - "updated", - "customer_uid" - ], - "description": "간편 결제 카드 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "간편 결제 카드 삭제하기.\n\n간편 결제를 위하여 등록한 카드를 제거한다." - }, - { - "method": "post", - "path": "/subscribe/payments/onetime", - "name": "subscribe_payments_onetime_post", - "parameters": [ - { - "type": "object", - "properties": { - "customer_uid": { - "description": "고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함.\n\n이를 생략시 단순 결제로만 그치며, 카드 정보가 간편 결제용으로 등록되지 아니함.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "card_number": { - "description": "카드 번호.\n\n형식: XXXX-XXXX-XXXX-XXXX", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "\\d{4}-\\d{4}-\\d{4}-\\d{4}" - }, - "expiry": { - "description": "카드 유효기간.\n\n형식: YYYY-MM", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^([0-9]{4})-(0[1-9]|1[012])$" - }, - "birth": { - "description": "생년월일 YYMMDD 또는 사업자등록번호 10자리.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^(([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01]))|(\\d{10})$" - }, - "pwd_2digit": { - "description": "카드 비밀번호 앞 두 자리.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "pattern": "\\d{2}" - }, - "cvc": { - "description": "카드 인증번호 (카드 뒷면 3 자리).", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "pattern": "\\d{2}" - }, - "customer_name": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customer_tel": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customer_email": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "format": "email" - }, - "customr_addr": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customer_postcode": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트가 아닌 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "name": { - "description": "주문 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ], - "description": "통화 정보.", - "x-typia-required": false, - "x-typia-optional": true - }, - "tax_free": { - "description": "면세 공급가액.\n\n기본값은 0 로써, 알아서 amount 의 1/11 로써 부가세 처리됨.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "card_quota": { - "description": "할부 개월 수.\n\n일시불은 0.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "buyer_name": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_email": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "format": "email" - }, - "buyer_tel": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_addr": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_postcode": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "interest_free_by_merchant": { - "type": "boolean", - "description": "카드할부처리할 때, 할부이자가 발생하는 경우 (카드사 무이자 프로모션 제외).\n\n부과되는 할부이자를 고객대신 가맹점이 지불하고자 PG사와 계약된 경우(현재, 나이스페이먼츠만 지원됨)", - "x-typia-required": false, - "x-typia-optional": true - }, - "use_card_point": { - "type": "boolean", - "description": "승인요청시 카드사 포인트 차감하며 결제승인처리할지 flag.\n\nPG사 영업담당자와 계약 당시 사전 협의 필요(현재, 나이스페이먼츠만 지원됨)", - "x-typia-required": false, - "x-typia-optional": true - }, - "custom_data": { - "description": "임의 정보를 기재할 수 있다.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "notice_url": { - "description": "결제 성공시 통지될 Notification, 웹훅 URL.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "format": "url" - } - }, - "required": [ - "card_number", - "expiry", - "birth", - "merchant_uid", - "amount", - "name" - ], - "description": "결제 신청 입력 정보.", - "x-typia-jsDocTags": [] - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "card_code": { - "description": "카드 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_name": { - "description": "카드 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "\\d{4}-\\d{4}-\\d{4}-\\d{4}" - }, - "card_quota": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "integer" - }, - "apply_num": { - "description": "카드사 승인번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pay_method": { - "type": "string", - "enum": [ - "card", - "samsung" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "card_code", - "card_name", - "card_number", - "card_quota", - "apply_num", - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "카드로 결제하기, 더불어 간편 결제용으로 등록 가능.\n\n`subscribe.payments.onetime` 은 카드를 매개로 한 결제를 하고자 할 때 호출하는 API\n함수이다. 더하여 입력 값에 {@link IIamportSubscription.IOnetime.customer_uid } 를\n기입하는 경우, 결제에 사용한 카드를 그대로 간편 결제용 카드\n{@link IIamportSubscription } 로 등록해버린다.\n\n다만, 정히 간편 카드 등록과 결제를 동시에 하고 싶다면,\n`subscribe.payments.onetime` 에 {@link IIamportSubscription.IOnetime.customer_uid }\n를 더하기보다, {@link subscribe.customers.store } 와 {@link subscribe.payments.again }\n을 각각 호출하는 것을 권장한다. 그것이 예외적인 상황에 보다 안전하게 대처할 수 있기\n때문이다.\n\n더하여 `subscribe.payments.onetime` 은 클라이언트 어플리케이션이 아임포트가 제공하는\n결제 창을 그대로 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는 일은\n없을 것이다. 다만, 고객이 카드를 통하여 결제하는 상황을 시뮬레이션하기 위하여, 테스트\n자동화 프로그램 수준에서 사용될 수는 있다." - }, - { - "method": "post", - "path": "/subscribe/payments/again", - "name": "subscribe_payments_again_post", - "parameters": [ - { - "type": "object", - "properties": { - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트가 아닌 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "name": { - "description": "주문 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ], - "description": "통화 정보.", - "x-typia-required": false, - "x-typia-optional": true - }, - "tax_free": { - "description": "면세 공급가액.\n\n기본값은 0 로써, 알아서 amount 의 1/11 로써 부가세 처리됨.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "card_quota": { - "description": "할부 개월 수.\n\n일시불은 0.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "buyer_name": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_email": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "format": "email" - }, - "buyer_tel": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_addr": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_postcode": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "interest_free_by_merchant": { - "type": "boolean", - "description": "카드할부처리할 때, 할부이자가 발생하는 경우 (카드사 무이자 프로모션 제외).\n\n부과되는 할부이자를 고객대신 가맹점이 지불하고자 PG사와 계약된 경우(현재, 나이스페이먼츠만 지원됨)", - "x-typia-required": false, - "x-typia-optional": true - }, - "use_card_point": { - "type": "boolean", - "description": "승인요청시 카드사 포인트 차감하며 결제승인처리할지 flag.\n\nPG사 영업담당자와 계약 당시 사전 협의 필요(현재, 나이스페이먼츠만 지원됨)", - "x-typia-required": false, - "x-typia-optional": true - }, - "custom_data": { - "description": "임의 정보를 기재할 수 있다.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "notice_url": { - "description": "결제 성공시 통지될 Notification, 웹훅 URL.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "format": "url" - }, - "customer_uid": { - "description": "고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "merchant_uid", - "amount", - "name", - "customer_uid" - ], - "description": "간편 결제 카드로 결제 신청 입력 정보.", - "x-typia-jsDocTags": [] - } - ], - "output": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "type": "object", - "properties": { - "card_code": { - "description": "카드 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_name": { - "description": "카드 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "\\d{4}-\\d{4}-\\d{4}-\\d{4}" - }, - "card_quota": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "integer" - }, - "apply_num": { - "description": "카드사 승인번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pay_method": { - "type": "string", - "enum": [ - "card", - "samsung" - ], - "x-typia-required": true, - "x-typia-optional": false - }, - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "cash_receipt_issue": { - "type": "boolean", - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "escrow": { - "type": "boolean", - "x-typia-required": true, - "x-typia-optional": false - }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true - }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true - }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - } - }, - "required": [ - "card_code", - "card_name", - "card_number", - "card_quota", - "apply_num", - "pay_method", - "imp_uid", - "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" - ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - }, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "간편 결제에 등록된 카드로 결제하기.\n\n`subscribe.payments.again` 은 고객이 간편 결제에 등록한 카드로 결제를 진행하고자 할 때\n호출하는 API 함수이다. 이는 간편하고 불편하고를 떠나, 본질적으로 카드 결제의 일환이기에,\n리턴값은 일반적인 카드 결제 때와 동일한 {@link IIamportCardPayment } 이다.\n\n그리고 `subscribe.payments.again` 은 결제 수단 중 유일하게, 클라이언트 어플리케이션이\n아임포트가 제공하는 결체 창을 사용할 수 없어, 오직 귀하의 백엔드 서버가 아임포트의 API\n함수를 직접 호출해야하는 경우에 해당한다. 따라서 간편 결제에 관하여 아임포트 서버와\n연동하는 백엔드 서버 및 프론트 어플리케이션을 개발할 때, 반드시 이 상황에 대한 별도의\n설계 및 개발이 필요하니, 이 점을 염두에 두기 바란다." - } - ], - "errors": [], - "options": { - "keyword": false, - "separate": null - } -} \ No newline at end of file +{"openapi":"3.0.3","functions":[{"method":"get","path":"/subscribe/customers/{customer_uid}","name":"subscribe_customers_getByCustomer_uid","parameters":[{"type":"string","description":" 고객 (간편 결제 카드) 식별자 키"}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"pg_provider":{"type":"string"},"pg_id":{"type":"string"},"card_name":{"type":"string"},"card_code":{"type":"string"},"card_number":{"type":"string"},"card_type":{"type":"string"},"customer_name":{"type":"string","nullable":true},"customer_tel":{"type":"string","nullable":true},"customer_email":{"type":"string","nullable":true},"customer_addr":{"type":"string","nullable":true},"customer_postcode":{"type":"string","nullable":true},"inserted":{"type":"number"},"updated":{"type":"number"},"customer_uid":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함."}},"required":["pg_provider","pg_id","card_name","card_code","card_number","card_type","customer_name","customer_tel","customer_email","customer_addr","customer_postcode","inserted","updated","customer_uid"],"description":"간편 결제 카드 정보."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"간편 결제 카드 정보 조회하기.\n\n`subscribe.customers.at` 은 고객이 {@link create} 나 혹은 아임포트가 제공하는\n간편 결제 카드 등록 창을 이용하여 저장한 간편 결제 카드 정보를 조회하는 API\n함수이다."},{"method":"post","path":"/subscribe/customers/{customer_uid}","name":"subscribe_customers_postByCustomer_uid","parameters":[{"type":"string","description":" 고객 (간편 결제 카드) 식별자 키"},{"type":"object","properties":{"card_number":{"type":"string","pattern":"\\d{4}-\\d{4}-\\d{4}-\\d{4}","title":"카드 번호","description":"카드 번호.\n\n형식: XXXX-XXXX-XXXX-XXXX"},"expiry":{"type":"string","pattern":"^([0-9]{4})-(0[1-9]|1[012])$","title":"카드 유효기간","description":"카드 유효기간.\n\n형식: YYYY-MM"},"birth":{"type":"string","pattern":"^(([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01]))|(\\d{10})$","title":"생년월일 YYMMDD 또는 사업자등록번호 10자리","description":"생년월일 YYMMDD 또는 사업자등록번호 10자리."},"pwd_2digit":{"type":"string","pattern":"\\d{2}","title":"카드 비밀번호 앞 두 자리","description":"카드 비밀번호 앞 두 자리."},"cvc":{"type":"string","pattern":"\\d{2}","title":"카드 인증번호 (카드 뒷면 3 자리)","description":"카드 인증번호 (카드 뒷면 3 자리)."},"customer_name":{"type":"string"},"customer_tel":{"type":"string"},"customer_email":{"type":"string","format":"email"},"customr_addr":{"type":"string"},"customer_postcode":{"type":"string"},"customer_uid":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함."}},"required":["card_number","expiry","birth","customer_uid"],"description":"간편 결제 카드 입력 정보."}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"pg_provider":{"type":"string"},"pg_id":{"type":"string"},"card_name":{"type":"string"},"card_code":{"type":"string"},"card_number":{"type":"string"},"card_type":{"type":"string"},"customer_name":{"type":"string","nullable":true},"customer_tel":{"type":"string","nullable":true},"customer_email":{"type":"string","nullable":true},"customer_addr":{"type":"string","nullable":true},"customer_postcode":{"type":"string","nullable":true},"inserted":{"type":"number"},"updated":{"type":"number"},"customer_uid":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함."}},"required":["pg_provider","pg_id","card_name","card_code","card_number","card_type","customer_name","customer_tel","customer_email","customer_addr","customer_postcode","inserted","updated","customer_uid"],"description":"간편 결제 카드 정보."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"간편 결제 카드 등록하기.\n\n`subscribe.customers.stoer` 는 고객이 자신의 카드를 서버에 등록해두고, 매번 결제가\n필요할 때마다 카드 정보를 반복 입력하는 일 없이, 간편하게 결제를 진행하고자 할 때\n사용하는 API 함수이다.\n\n참고로 `subscribe.customers.create` 는 클라이언트 어플리케이션이 아임포트가 제공하는\n간편 결제 카드 등록 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는\n일은 없을 것이다. 다만, 고객이 간편 결제 카드를 등록하는 상황을 시뮬레이션하기 위하여,\n테스트 자동화 프로그램 수준에서 사용될 수는 있다."},{"method":"delete","path":"/subscribe/customers/{customer_uid}","name":"subscribe_customers_eraseByCustomer_uid","parameters":[{"type":"string","description":" 고객 (간편 결제 카드) 식별자 키"}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"pg_provider":{"type":"string"},"pg_id":{"type":"string"},"card_name":{"type":"string"},"card_code":{"type":"string"},"card_number":{"type":"string"},"card_type":{"type":"string"},"customer_name":{"type":"string","nullable":true},"customer_tel":{"type":"string","nullable":true},"customer_email":{"type":"string","nullable":true},"customer_addr":{"type":"string","nullable":true},"customer_postcode":{"type":"string","nullable":true},"inserted":{"type":"number"},"updated":{"type":"number"},"customer_uid":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함."}},"required":["pg_provider","pg_id","card_name","card_code","card_number","card_type","customer_name","customer_tel","customer_email","customer_addr","customer_postcode","inserted","updated","customer_uid"],"description":"간편 결제 카드 정보."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"간편 결제 카드 삭제하기.\n\n간편 결제를 위하여 등록한 카드를 제거한다."},{"method":"post","path":"/subscribe/payments/onetime","name":"subscribe_payments_onetime_post","parameters":[{"type":"object","properties":{"customer_uid":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함.\n\n이를 생략시 단순 결제로만 그치며, 카드 정보가 간편 결제용으로 등록되지 아니함."},"card_number":{"type":"string","pattern":"\\d{4}-\\d{4}-\\d{4}-\\d{4}","title":"카드 번호","description":"카드 번호.\n\n형식: XXXX-XXXX-XXXX-XXXX"},"expiry":{"type":"string","pattern":"^([0-9]{4})-(0[1-9]|1[012])$","title":"카드 유효기간","description":"카드 유효기간.\n\n형식: YYYY-MM"},"birth":{"type":"string","pattern":"^(([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01]))|(\\d{10})$","title":"생년월일 YYMMDD 또는 사업자등록번호 10자리","description":"생년월일 YYMMDD 또는 사업자등록번호 10자리."},"pwd_2digit":{"type":"string","pattern":"\\d{2}","title":"카드 비밀번호 앞 두 자리","description":"카드 비밀번호 앞 두 자리."},"cvc":{"type":"string","pattern":"\\d{2}","title":"카드 인증번호 (카드 뒷면 3 자리)","description":"카드 인증번호 (카드 뒷면 3 자리)."},"customer_name":{"type":"string"},"customer_tel":{"type":"string"},"customer_email":{"type":"string","format":"email"},"customr_addr":{"type":"string"},"customer_postcode":{"type":"string"},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트가 아닌 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"name":{"type":"string","title":"주문 이름","description":"주문 이름."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"],"title":"통화 정보","description":"통화 정보."},"tax_free":{"type":"number","title":"면세 공급가액","description":"면세 공급가액.\n\n기본값은 0 로써, 알아서 amount 의 1/11 로써 부가세 처리됨."},"card_quota":{"type":"number","title":"할부 개월 수","description":"할부 개월 수.\n\n일시불은 0."},"buyer_name":{"type":"string"},"buyer_email":{"type":"string","format":"email"},"buyer_tel":{"type":"string"},"buyer_addr":{"type":"string"},"buyer_postcode":{"type":"string"},"interest_free_by_merchant":{"type":"boolean","title":"카드할부처리할 때, 할부이자가 발생하는 경우 (카드사 무이자 프로모션 제외)","description":"카드할부처리할 때, 할부이자가 발생하는 경우 (카드사 무이자 프로모션 제외).\n\n부과되는 할부이자를 고객대신 가맹점이 지불하고자 PG사와 계약된 경우(현재, 나이스페이먼츠만 지원됨)"},"use_card_point":{"type":"boolean","title":"승인요청시 카드사 포인트 차감하며 결제승인처리할지 flag","description":"승인요청시 카드사 포인트 차감하며 결제승인처리할지 flag.\n\nPG사 영업담당자와 계약 당시 사전 협의 필요(현재, 나이스페이먼츠만 지원됨)"},"custom_data":{"type":"string","title":"임의 정보를 기재할 수 있다","description":"임의 정보를 기재할 수 있다."},"notice_url":{"type":"string","format":"uri","title":"결제 성공시 통지될 Notification, 웹훅 URL","description":"결제 성공시 통지될 Notification, 웹훅 URL."}},"required":["card_number","expiry","birth","merchant_uid","amount","name"],"description":"결제 신청 입력 정보."}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"card_code":{"type":"string","title":"카드 식별자 코드","description":"카드 식별자 코드."},"card_name":{"type":"string","title":"카드 이름","description":"카드 이름."},"card_number":{"type":"string","pattern":"\\d{4}-\\d{4}-\\d{4}-\\d{4}","title":"카드 번호","description":"카드 번호."},"card_quota":{"type":"integer","title":"할부 개월 수","description":"할부 개월 수."},"apply_num":{"type":"string","title":"카드사 승인번호","description":"카드사 승인번호."},"pay_method":{"type":"string","enum":["card","samsung"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["card_code","card_name","card_number","card_quota","apply_num","pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"카드 결제 정보."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"카드로 결제하기, 더불어 간편 결제용으로 등록 가능.\n\n`subscribe.payments.onetime` 은 카드를 매개로 한 결제를 하고자 할 때 호출하는 API\n함수이다. 더하여 입력 값에 {@link IIamportSubscription.IOnetime.customer_uid} 를\n기입하는 경우, 결제에 사용한 카드를 그대로 간편 결제용 카드\n{@link IIamportSubscription} 로 등록해버린다.\n\n다만, 정히 간편 카드 등록과 결제를 동시에 하고 싶다면,\n`subscribe.payments.onetime` 에 {@link IIamportSubscription.IOnetime.customer_uid}\n를 더하기보다, {@link subscribe.customers.create} 와 {@link subscribe.payments.again}\n을 각각 호출하는 것을 권장한다. 그것이 예외적인 상황에 보다 안전하게 대처할 수 있기\n때문이다.\n\n더하여 `subscribe.payments.onetime` 은 클라이언트 어플리케이션이 아임포트가 제공하는\n결제 창을 그대로 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는 일은\n없을 것이다. 다만, 고객이 카드를 통하여 결제하는 상황을 시뮬레이션하기 위하여, 테스트\n자동화 프로그램 수준에서 사용될 수는 있다."},{"method":"post","path":"/subscribe/payments/again","name":"subscribe_payments_again_post","parameters":[{"type":"object","properties":{"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트가 아닌 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"name":{"type":"string","title":"주문 이름","description":"주문 이름."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"],"title":"통화 정보","description":"통화 정보."},"tax_free":{"type":"number","title":"면세 공급가액","description":"면세 공급가액.\n\n기본값은 0 로써, 알아서 amount 의 1/11 로써 부가세 처리됨."},"card_quota":{"type":"number","title":"할부 개월 수","description":"할부 개월 수.\n\n일시불은 0."},"buyer_name":{"type":"string"},"buyer_email":{"type":"string","format":"email"},"buyer_tel":{"type":"string"},"buyer_addr":{"type":"string"},"buyer_postcode":{"type":"string"},"interest_free_by_merchant":{"type":"boolean","title":"카드할부처리할 때, 할부이자가 발생하는 경우 (카드사 무이자 프로모션 제외)","description":"카드할부처리할 때, 할부이자가 발생하는 경우 (카드사 무이자 프로모션 제외).\n\n부과되는 할부이자를 고객대신 가맹점이 지불하고자 PG사와 계약된 경우(현재, 나이스페이먼츠만 지원됨)"},"use_card_point":{"type":"boolean","title":"승인요청시 카드사 포인트 차감하며 결제승인처리할지 flag","description":"승인요청시 카드사 포인트 차감하며 결제승인처리할지 flag.\n\nPG사 영업담당자와 계약 당시 사전 협의 필요(현재, 나이스페이먼츠만 지원됨)"},"custom_data":{"type":"string","title":"임의 정보를 기재할 수 있다","description":"임의 정보를 기재할 수 있다."},"notice_url":{"type":"string","format":"uri","title":"결제 성공시 통지될 Notification, 웹훅 URL","description":"결제 성공시 통지될 Notification, 웹훅 URL."},"customer_uid":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함."}},"required":["merchant_uid","amount","name","customer_uid"],"description":"간편 결제 카드로 결제 신청 입력 정보."}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"card_code":{"type":"string","title":"카드 식별자 코드","description":"카드 식별자 코드."},"card_name":{"type":"string","title":"카드 이름","description":"카드 이름."},"card_number":{"type":"string","pattern":"\\d{4}-\\d{4}-\\d{4}-\\d{4}","title":"카드 번호","description":"카드 번호."},"card_quota":{"type":"integer","title":"할부 개월 수","description":"할부 개월 수."},"apply_num":{"type":"string","title":"카드사 승인번호","description":"카드사 승인번호."},"pay_method":{"type":"string","enum":["card","samsung"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["card_code","card_name","card_number","card_quota","apply_num","pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"카드 결제 정보."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"간편 결제에 등록된 카드로 결제하기.\n\n`subscribe.payments.again` 은 고객이 간편 결제에 등록한 카드로 결제를 진행하고자 할 때\n호출하는 API 함수이다. 이는 간편하고 불편하고를 떠나, 본질적으로 카드 결제의 일환이기에,\n리턴값은 일반적인 카드 결제 때와 동일한 {@link IIamportCardPayment} 이다.\n\n그리고 `subscribe.payments.again` 은 결제 수단 중 유일하게, 클라이언트 어플리케이션이\n아임포트가 제공하는 결체 창을 사용할 수 없어, 오직 귀하의 백엔드 서버가 아임포트의 API\n함수를 직접 호출해야하는 경우에 해당한다. 따라서 간편 결제에 관하여 아임포트 서버와\n연동하는 백엔드 서버 및 프론트 어플리케이션을 개발할 때, 반드시 이 상황에 대한 별도의\n설계 및 개발이 필요하니, 이 점을 염두에 두기 바란다."},{"method":"get","path":"/certifications/{imp_uid}","name":"certifications_getByImp_uid","parameters":[{"type":"string","description":" 대상 본인인증 정보의 {@link IIamportCertification.imp_uid}"}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"imp_uid":{"type":"string","title":"아임포트가 발급해 준 식별자 번호","description":"아임포트가 발급해 준 식별자 번호."},"merchant_uid":{"type":"string","nullable":true,"title":"서비스로부터의 식별자 키","description":"서비스로부터의 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","title":"본인인증대상자 성명","description":"본인인증대상자 성명."},"gender":{"type":"string","title":"성별","description":"성별."},"birth":{"type":"number","title":"생년월일","description":"생년월일.\n\n리눅스 타임이 쓰인다."},"birthday":{"type":"string","pattern":"^([0-9]{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$","title":"생년월일, YYYYMMDD 형식","description":"생년월일, YYYYMMDD 형식."},"foreigner":{"type":"boolean","title":"외국인 여부","description":"외국인 여부."},"phone":{"type":"string","title":"본인인증 대상자 핸드폰 번호","description":"본인인증 대상자 핸드폰 번호."},"carrier":{"type":"string","enum":["SKT","KT","LGT"],"title":"본인인증 대상자 통신사 코드","description":"본인인증 대상자 통신사 코드."},"certified":{"type":"boolean","title":"OTP 인증 여부","description":"OTP 인증 여부."},"certified_at":{"type":"number","title":"OTP 인증 일시","description":"OTP 인증 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"unique_key":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"unique_in_site":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"pg_tid":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"pg_provider":{"type":"string","title":"PG 제공자","description":"PG 제공자."},"origin":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"__otp":{"type":"string","title":"(테스트 전용) OTP 코드","description":"(테스트 전용) OTP 코드.\n\n오직 `fake-iamport-server` 에서만 쓰이는 속성으로써, 본인인증을 시뮬레이션할 때,\n어떠한 OTP 코드가 발급되었는 지를 확인하기 위하여 사용된다. 이를 이용하여\n{@link functional.certifications.otp.confirm} 함수를 호출하면, 본인인증을 완료할\n수 있다."}},"required":["imp_uid","merchant_uid","name","gender","birth","birthday","foreigner","phone","carrier","certified","certified_at","unique_key","unique_in_site","pg_tid","pg_provider","origin"],"description":"본인 인증 내역.\n\n`IIamportCertification` 은 아임포트의 본인인증 정보를 형상화한 자료구조 인터페이스이다.\n\n단, `IIamportCertification` 레코드의 존재가 곧 본인인증의 완결을 뜻하는 것은 아니다.\n{@link IIamportCertification.certified} 값이 `true` 여야만이 비로소, 본인인증\n대상자가 자신의 핸드폰 번호로 전송된 OTP 를 아임포트의 본인인증 팝업창에 정확히 적어,\n본인인증을 완료했음을 의미한다."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"본인인증 정보 열람하기.\n\n`certiciations.at` 은 본인인증 정보를 열람할 때 사용하는 API 함수이다.\n\n다만 이 API 함수를 통하여 열람한 본인인증 정보 {@link IIamportCertification} 이\n곧 OTP 인증까지 마쳐 본인인증을 모두 마친 레코드라는 보장은 없다. 본인인증의 완결\n여부는 오직, {@link IIamportCertification.certified} 값을 직접 검사해봐야만 알\n수 있기 때문이다."},{"method":"delete","path":"/certifications/{imp_uid}","name":"certifications_eraseByImp_uid","parameters":[{"type":"string","description":" 대상 본인인증 정보의 {@link IIamportCertification.imp_uid}"}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"imp_uid":{"type":"string","title":"아임포트가 발급해 준 식별자 번호","description":"아임포트가 발급해 준 식별자 번호."},"merchant_uid":{"type":"string","nullable":true,"title":"서비스로부터의 식별자 키","description":"서비스로부터의 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","title":"본인인증대상자 성명","description":"본인인증대상자 성명."},"gender":{"type":"string","title":"성별","description":"성별."},"birth":{"type":"number","title":"생년월일","description":"생년월일.\n\n리눅스 타임이 쓰인다."},"birthday":{"type":"string","pattern":"^([0-9]{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$","title":"생년월일, YYYYMMDD 형식","description":"생년월일, YYYYMMDD 형식."},"foreigner":{"type":"boolean","title":"외국인 여부","description":"외국인 여부."},"phone":{"type":"string","title":"본인인증 대상자 핸드폰 번호","description":"본인인증 대상자 핸드폰 번호."},"carrier":{"type":"string","enum":["SKT","KT","LGT"],"title":"본인인증 대상자 통신사 코드","description":"본인인증 대상자 통신사 코드."},"certified":{"type":"boolean","title":"OTP 인증 여부","description":"OTP 인증 여부."},"certified_at":{"type":"number","title":"OTP 인증 일시","description":"OTP 인증 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"unique_key":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"unique_in_site":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"pg_tid":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"pg_provider":{"type":"string","title":"PG 제공자","description":"PG 제공자."},"origin":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"__otp":{"type":"string","title":"(테스트 전용) OTP 코드","description":"(테스트 전용) OTP 코드.\n\n오직 `fake-iamport-server` 에서만 쓰이는 속성으로써, 본인인증을 시뮬레이션할 때,\n어떠한 OTP 코드가 발급되었는 지를 확인하기 위하여 사용된다. 이를 이용하여\n{@link functional.certifications.otp.confirm} 함수를 호출하면, 본인인증을 완료할\n수 있다."}},"required":["imp_uid","merchant_uid","name","gender","birth","birthday","foreigner","phone","carrier","certified","certified_at","unique_key","unique_in_site","pg_tid","pg_provider","origin"],"description":"본인 인증 내역.\n\n`IIamportCertification` 은 아임포트의 본인인증 정보를 형상화한 자료구조 인터페이스이다.\n\n단, `IIamportCertification` 레코드의 존재가 곧 본인인증의 완결을 뜻하는 것은 아니다.\n{@link IIamportCertification.certified} 값이 `true` 여야만이 비로소, 본인인증\n대상자가 자신의 핸드폰 번호로 전송된 OTP 를 아임포트의 본인인증 팝업창에 정확히 적어,\n본인인증을 완료했음을 의미한다."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"본인인증 정보 삭제하기."},{"method":"post","path":"/certifications/otp/request","name":"certifications_otp_request_post","parameters":[{"type":"object","properties":{"name":{"type":"string","title":"본인인증대상자 성명","description":"본인인증대상자 성명."},"phone":{"type":"string","title":"본인인증 대상자 핸드폰 번호","description":"본인인증 대상자 핸드폰 번호.\n\n핸드폰 번호에 \"-\" 값이 들어가던 아니던 상관 없음.\n\n다만, 내부적으로는 \"-\" 값을 제거하여 처리한다."},"birth":{"type":"string","pattern":"^([0-9]{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$","title":"생년월일","description":"생년월일.\n\nYYYYMMDD 형식."},"gender_digit":{"type":"string","title":"주민등록 뒷부분 첫 자리","description":"주민등록 뒷부분 첫 자리."},"carrier":{"type":"string","enum":["SKT","KT","LGT"],"title":"본인인증 대상자 통신사 코드","description":"본인인증 대상자 통신사 코드."},"is_mvno":{"type":"boolean","title":"알뜰폰 여부","description":"알뜰폰 여부."},"commpany":{"type":"string","title":"가맹점 서비스 명칭 또는 domain URL","description":"가맹점 서비스 명칭 또는 domain URL.\n\nKISA 에서 대상자에게 발송하는 SMS에 안내될 서비스 명칭."},"merchant_uid":{"type":"string","title":"귀사 서비스에서의 본인인증 식별자 키","description":"귀사 서비스에서의 본인인증 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"pg":{"type":"string","title":"PG 사 구분자","description":"PG 사 구분자.\n\n다날 상점아이디를 2개 이상 동시에 사용하시려는 경우에 설정하면 된다.\n\n**danal.{상점아이디}** 형태로 지정."}},"required":["name","phone","birth","gender_digit","carrier"],"description":"본인 인증 입력 정보."}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"imp_uid":{"type":"string","title":"본인인증정보의 식별자 키","description":"본인인증정보의 식별자 키."}},"required":["imp_uid"],"description":"본인인증 정보의 접근자 구조체."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"본인인증 요청하기.\n\n`certifications.otp.request` 는 아임포트 서버에 본인인증을 요청하는 API 함수이다.\n이 API 를 호출하면 본인인증 대상자의 핸드폰으로 OTP 문자가 전송되며, 본인인증\n대상자가 {@link certifications.otp.confirm} 을 통하여 이 OTP 번호를 정확히\n입력함으로써, 본인인증이 완결된다.\n\n또한 본인인증 대상자가 자신의 핸드폰으로 전송된 OTP 문자를 입력하기 전에도,\n여전히해당 본인인증 내역은 {@link certifications.at} 함수를 통하여 조회할 수 있다.\n다만, 이 때 리턴되는 {@link IIamportCertification} 에서 인증의 완결 여부를\n지칭하는 {@link IIamportCertification.certified} 값은 `false` 이다."},{"method":"post","path":"/certifications/otp/confirm/{imp_uid}","name":"certifications_otp_confirm_postByImp_uid","parameters":[{"type":"string","description":" 대상 본인인증 정보의 {@link IIamportCertification.imp_uid}"},{"type":"object","properties":{"otp":{"type":"string","title":"SMS 로 전송된 본인인증 번호","description":"SMS 로 전송된 본인인증 번호."}},"required":["otp"],"description":"본인인증 승인을 위한 입력 정보."}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"imp_uid":{"type":"string","title":"아임포트가 발급해 준 식별자 번호","description":"아임포트가 발급해 준 식별자 번호."},"merchant_uid":{"type":"string","nullable":true,"title":"서비스로부터의 식별자 키","description":"서비스로부터의 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","title":"본인인증대상자 성명","description":"본인인증대상자 성명."},"gender":{"type":"string","title":"성별","description":"성별."},"birth":{"type":"number","title":"생년월일","description":"생년월일.\n\n리눅스 타임이 쓰인다."},"birthday":{"type":"string","pattern":"^([0-9]{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$","title":"생년월일, YYYYMMDD 형식","description":"생년월일, YYYYMMDD 형식."},"foreigner":{"type":"boolean","title":"외국인 여부","description":"외국인 여부."},"phone":{"type":"string","title":"본인인증 대상자 핸드폰 번호","description":"본인인증 대상자 핸드폰 번호."},"carrier":{"type":"string","enum":["SKT","KT","LGT"],"title":"본인인증 대상자 통신사 코드","description":"본인인증 대상자 통신사 코드."},"certified":{"type":"boolean","title":"OTP 인증 여부","description":"OTP 인증 여부."},"certified_at":{"type":"number","title":"OTP 인증 일시","description":"OTP 인증 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"unique_key":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"unique_in_site":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"pg_tid":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"pg_provider":{"type":"string","title":"PG 제공자","description":"PG 제공자."},"origin":{"type":"string","description":"뭔지 잘 모름, 용도 아시는 분?"},"__otp":{"type":"string","title":"(테스트 전용) OTP 코드","description":"(테스트 전용) OTP 코드.\n\n오직 `fake-iamport-server` 에서만 쓰이는 속성으로써, 본인인증을 시뮬레이션할 때,\n어떠한 OTP 코드가 발급되었는 지를 확인하기 위하여 사용된다. 이를 이용하여\n{@link functional.certifications.otp.confirm} 함수를 호출하면, 본인인증을 완료할\n수 있다."}},"required":["imp_uid","merchant_uid","name","gender","birth","birthday","foreigner","phone","carrier","certified","certified_at","unique_key","unique_in_site","pg_tid","pg_provider","origin"],"description":"본인 인증 내역.\n\n`IIamportCertification` 은 아임포트의 본인인증 정보를 형상화한 자료구조 인터페이스이다.\n\n단, `IIamportCertification` 레코드의 존재가 곧 본인인증의 완결을 뜻하는 것은 아니다.\n{@link IIamportCertification.certified} 값이 `true` 여야만이 비로소, 본인인증\n대상자가 자신의 핸드폰 번호로 전송된 OTP 를 아임포트의 본인인증 팝업창에 정확히 적어,\n본인인증을 완료했음을 의미한다."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"본인인증 시 발급된 OTP 코드 입력하기.\n\n`certifications.otp.confirm` 는 {@link certifications.otp.request} 를 통하여\n발급된 본인인증 건에 대하여, 본인인증 대상자의 휴대폰으로 전송된 OTP 번호를\n검증하고, 입력한 OTP 번호가 맞거든 해당 본인인증 건을 승인하여 완료 처리해주는\nAPI 함수이다.\n\n이처럼 본인인증을 완료하거든, 해당 본인인증 건 {@link IIamportCertification} 의\n{@link IIamportCertification.certified} 값이 비로소 `true` 로 변경되어,\n비로소 완결된다."},{"method":"post","path":"/internal/webhook","name":"internal_webhook_post","parameters":[{"type":"object","properties":{"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"status":{"type":"string","enum":["paid","ready","failed","cancelled"],"title":"현재 상태","description":"현재 상태."}},"required":["imp_uid","merchant_uid","status"],"description":"웹훅 데이터."}],"description":"웹훅 이벤트 더미 리스너.\n\n`internal.webhook` 은 실제 아임포트의 서버에는 존재하지 않는 API 로써,\n`fake-impoart-server` 의 {@link Configuration.WEBHOOK_URL} 에 아무런 URL 을 설정하지\n않으면, `fake-iamport-server` 로부터 발생하는 모든 종류의 웹훅 이벤트는 이 곳으로 전달되어\n무의미하게 사라진다.\n\n따라서 `fake-iamport-server` 를 사용하여 아임포트 서버와의 연동을 미리 검증코자 할 때는,\n반드시 {@link Configuration.WEBHOOK_URL} 를 설정하여 웹훅 이벤트가 귀하의 백엔드 서버로\n제대로 전달되도록 하자."},{"method":"put","path":"/internal/deposit/{imp_uid}","name":"internal_deposit_putByImp_uid","parameters":[{"type":"string","description":" 대상 결제의 {@link IIamportVBankPayment.imp_uid }"}],"description":"가상 계좌에 입금하기.\n\n`internal.deposit` 은 실제 아임포트 결제 서버에는 존재하지 않는 API 로써, 가상 계좌\n결제를 신청한 고객이, 이후 가상 계좌에 목표 금액을 입금하는 상황을 시뮬레이션 할 수 있는\n함수이다.\n\n즉, `internal.deposit` 는 고객이 스스로에게 가상으로 발급된 계좌에 입금을 하고, 그에 따라\n아임포트 서버에서 webhook 이벤트가 발생, 이를 귀하의 백엔드 서버로 전송하는 일련의 상황을\n시뮬레이션하기 위하여 설계된 테스트 함수다."},{"method":"get","path":"/payments/{imp_uid}","name":"payments_getByImp_uid","parameters":[{"type":"string","description":" 대상 결제 기록의 {@link IIamportPayment.imp_uid}"},{"type":"object","properties":{"extension":{"type":"boolean","title":"페이팔의 경우, 이 값을 `true` 로 할 것","description":"페이팔의 경우, 이 값을 `true` 로 할 것."}},"required":[]}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"oneOf":[{"type":"object","properties":{"card_code":{"type":"string","title":"카드 식별자 코드","description":"카드 식별자 코드."},"card_name":{"type":"string","title":"카드 이름","description":"카드 이름."},"card_number":{"type":"string","pattern":"\\d{4}-\\d{4}-\\d{4}-\\d{4}","title":"카드 번호","description":"카드 번호."},"card_quota":{"type":"integer","title":"할부 개월 수","description":"할부 개월 수."},"apply_num":{"type":"string","title":"카드사 승인번호","description":"카드사 승인번호."},"pay_method":{"type":"string","enum":["card","samsung"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["card_code","card_name","card_number","card_quota","apply_num","pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"카드 결제 정보."},{"type":"object","properties":{"bank_code":{"type":"string","title":"은행 식별자 코드","description":"은행 식별자 코드."},"bank_name":{"type":"string","title":"은행 이름","description":"은행 이름."},"pay_method":{"type":"string","enum":["trans"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["bank_code","bank_name","pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"계좌 이체 결제 정보."},{"type":"object","properties":{"vbank_code":{"type":"string","title":"가상 계좌 식별자 코드","description":"가상 계좌 식별자 코드."},"vbank_name":{"type":"string","description":"가상 게좌 이름"},"vbank_num":{"type":"string","description":"가상 계좌 번호"},"vbank_holder":{"type":"string","title":"가상 계좌 예금주","description":"가상 계좌 예금주."},"vbank_date":{"type":"number","title":"가상 계좌 입금 만료 기한","description":"가상 계좌 입금 만료 기한."},"vbank_issued_at":{"type":"number","title":"가상 계좌 개설 일시","description":"가상 계좌 개설 일시."},"pay_method":{"type":"string","enum":["vbank"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["vbank_code","vbank_name","vbank_num","vbank_holder","vbank_date","vbank_issued_at","pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"가상 계좌 결제 정보."},{"type":"object","properties":{"pay_method":{"type":"string","enum":["phone","kpay","kakaopay","payco","lpay","ssgpay","tosspay","cultureland","smartculture","happymoney","booknlife","point"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"결제 기본 (공통) 정보."}],"description":"결제 정보.\n\n`IIamportPayment` 는 아임포트의 결제 정보를 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.pay_method === \"card\")\n payment.card_number; // payment be IIamportCardPayment\n```"}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"결제 기록 열람하기.\n\n아임포트를 통하여 발생한 결제 기록을 열람한다."},{"method":"post","path":"/payments/cancel","name":"payments_cancel_post","parameters":[{"type":"object","properties":{"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"amount":{"type":"number","title":"취소 금액, 부분 취소도 가능하다","description":"취소 금액, 부분 취소도 가능하다.\n\n누락시 전액 취소."},"checksum":{"type":"number","minimum":0,"nullable":true,"title":"취소 트랜잭션 수행 전, 현재 시점의 취소 가능한 잔액","description":"취소 트랜잭션 수행 전, 현재 시점의 취소 가능한 잔액.\n\nAPI요청자가 기록하고 있는 취소가능 잔액과 아임포트가 기록하고 있는 취소가능 잔액이\n일치하는지 사전에 검증하고, 검증에 실패하면 트랜잭션을 수행하지 않는다.\n\n`null` 인 경우에는 검증 프로세스를 생략."},"reason":{"type":"string","title":"취소 사유","description":"취소 사유."},"tax_free":{"type":"number","title":"취소요청금액 중 면세금액","description":"취소요청금액 중 면세금액."},"refund_holder":{"type":"string","title":"환불계좌 예금주","description":"환불계좌 예금주."},"refund_bank":{"type":"string","title":"환불계좌 은행 코드","description":"환불계좌 은행 코드."},"refund_account":{"type":"string","title":"환불계좌 계좌번호","description":"환불계좌 계좌번호."},"refund_tel":{"type":"string","description":"환불계좌 예금주 연락처"}},"required":["imp_uid","merchant_uid","checksum","reason"],"description":"결제 취소 입력 정보."}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"oneOf":[{"type":"object","properties":{"card_code":{"type":"string","title":"카드 식별자 코드","description":"카드 식별자 코드."},"card_name":{"type":"string","title":"카드 이름","description":"카드 이름."},"card_number":{"type":"string","pattern":"\\d{4}-\\d{4}-\\d{4}-\\d{4}","title":"카드 번호","description":"카드 번호."},"card_quota":{"type":"integer","title":"할부 개월 수","description":"할부 개월 수."},"apply_num":{"type":"string","title":"카드사 승인번호","description":"카드사 승인번호."},"pay_method":{"type":"string","enum":["card","samsung"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["card_code","card_name","card_number","card_quota","apply_num","pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"카드 결제 정보."},{"type":"object","properties":{"bank_code":{"type":"string","title":"은행 식별자 코드","description":"은행 식별자 코드."},"bank_name":{"type":"string","title":"은행 이름","description":"은행 이름."},"pay_method":{"type":"string","enum":["trans"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["bank_code","bank_name","pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"계좌 이체 결제 정보."},{"type":"object","properties":{"vbank_code":{"type":"string","title":"가상 계좌 식별자 코드","description":"가상 계좌 식별자 코드."},"vbank_name":{"type":"string","description":"가상 게좌 이름"},"vbank_num":{"type":"string","description":"가상 계좌 번호"},"vbank_holder":{"type":"string","title":"가상 계좌 예금주","description":"가상 계좌 예금주."},"vbank_date":{"type":"number","title":"가상 계좌 입금 만료 기한","description":"가상 계좌 입금 만료 기한."},"vbank_issued_at":{"type":"number","title":"가상 계좌 개설 일시","description":"가상 계좌 개설 일시."},"pay_method":{"type":"string","enum":["vbank"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["vbank_code","vbank_name","vbank_num","vbank_holder","vbank_date","vbank_issued_at","pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"가상 계좌 결제 정보."},{"type":"object","properties":{"pay_method":{"type":"string","enum":["phone","kpay","kakaopay","payco","lpay","ssgpay","tosspay","cultureland","smartculture","happymoney","booknlife","point"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"결제 기본 (공통) 정보."}],"description":"결제 정보.\n\n`IIamportPayment` 는 아임포트의 결제 정보를 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.pay_method === \"card\")\n payment.card_number; // payment be IIamportCardPayment\n```"}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"결제 취소하기.\n\n만약 가상 계좌를 통한 결제였다면, 반드시 환불 계좌 정보를 입력해줘야 한다."},{"method":"get","path":"/receipts/{imp_uid}","name":"receipts_getByImp_uid","parameters":[{"type":"string","description":" 귀속 결제의 {@link IIamportPayment.imp_uid}"}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"imp_uid":{"type":"string","title":"귀속 결제의 {@link IIamportPayment.imp_uid}","description":"귀속 결제의 {@link IIamportPayment.imp_uid}."},"receipt_uid":{"type":"string","title":"현금 영수증의 고유 식별자 ID","description":"현금 영수증의 고유 식별자 ID."},"apply_num":{"type":"string","title":"승인 번호","description":"승인 번호."},"type":{"type":"string","enum":["person","company"],"description":"현금영수증 발행 타입 (대상)."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"receipt_url":{"type":"string","format":"uri","title":"현금영수증 조회 URL","description":"현금영수증 조회 URL."},"applied_at":{"type":"number","title":"현금영수증 발행 시간","description":"현금영수증 발행 시간."},"cancelled_at":{"type":"number","title":"현금영수증 취소 시간","description":"현금영수증 취소 시간.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."}},"required":["imp_uid","receipt_uid","apply_num","type","amount","vat","receipt_url","applied_at","cancelled_at"],"description":"현금 영수증 정보."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"현금 영수증 조회하기."},{"method":"post","path":"/receipts/{imp_uid}","name":"receipts_postByImp_uid","parameters":[{"type":"string","description":" 귀속 결제의 {@link IIamportPayment.imp_uid}"},{"type":"object","properties":{"imp_uid":{"type":"string","title":"귀속 결제의 {@link IIamportPayment.imp_uid}","description":"귀속 결제의 {@link IIamportPayment.imp_uid}."},"identifier":{"type":"string","title":"현금영수증 발생대상 식별정보","description":"현금영수증 발생대상 식별정보.\n\n - 국세청현금영수증카드\n - 휴대폰번호\n - 주민등록번호\n - 사업자등록번호"},"identifier_type":{"type":"string","enum":["phone","person","business","taxcard"],"title":"현금영수증 발행대상 유형","description":"현금영수증 발행대상 유형.\n\n - person: 주민등록번호\n - business: 사업자등록번호\n - phone: 휴대폰번호\n - taxcard: 국세청현금영수증카드\n\n일부 PG 사의 경우 이 항목이 없어 된다는데, 어지간하면 그냥 쓰기 바람."},"type":{"type":"string","enum":["person","company"],"title":"현금영수증 발행 타입 (대상)","description":"현금영수증 발행 타입 (대상).\n\n누락시 person 이 사용됨."},"buyer_name":{"type":"string","title":"구매자 이름","description":"구매자 이름.\n\n형금영수증 발행건 사후 추적을 위해 가급 입력하기 바람."},"buyer_email":{"type":"string","title":"구매자 이메일","description":"구매자 이메일."},"buyer_tel":{"type":"string","title":"구매자 전화번호","description":"구매자 전화번호.\n\n현금영수증 발행건 사후 추적을 위해 가급 입력하기 바람."},"tax_free":{"type":"number","title":"면세 금액","description":"면세 금액."}},"required":["imp_uid","identifier"],"description":"현금영수증 입력 정보."}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"imp_uid":{"type":"string","title":"귀속 결제의 {@link IIamportPayment.imp_uid}","description":"귀속 결제의 {@link IIamportPayment.imp_uid}."},"receipt_uid":{"type":"string","title":"현금 영수증의 고유 식별자 ID","description":"현금 영수증의 고유 식별자 ID."},"apply_num":{"type":"string","title":"승인 번호","description":"승인 번호."},"type":{"type":"string","enum":["person","company"],"description":"현금영수증 발행 타입 (대상)."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"receipt_url":{"type":"string","format":"uri","title":"현금영수증 조회 URL","description":"현금영수증 조회 URL."},"applied_at":{"type":"number","title":"현금영수증 발행 시간","description":"현금영수증 발행 시간."},"cancelled_at":{"type":"number","title":"현금영수증 취소 시간","description":"현금영수증 취소 시간.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."}},"required":["imp_uid","receipt_uid","apply_num","type","amount","vat","receipt_url","applied_at","cancelled_at"],"description":"현금 영수증 정보."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"현금 영수증 발행하기."},{"method":"delete","path":"/receipts/{imp_uid}","name":"receipts_eraseByImp_uid","parameters":[{"type":"string","description":" 귀속 결제의 {@link IIamportPayment.imp_uid}"}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"imp_uid":{"type":"string","title":"귀속 결제의 {@link IIamportPayment.imp_uid}","description":"귀속 결제의 {@link IIamportPayment.imp_uid}."},"receipt_uid":{"type":"string","title":"현금 영수증의 고유 식별자 ID","description":"현금 영수증의 고유 식별자 ID."},"apply_num":{"type":"string","title":"승인 번호","description":"승인 번호."},"type":{"type":"string","enum":["person","company"],"description":"현금영수증 발행 타입 (대상)."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"receipt_url":{"type":"string","format":"uri","title":"현금영수증 조회 URL","description":"현금영수증 조회 URL."},"applied_at":{"type":"number","title":"현금영수증 발행 시간","description":"현금영수증 발행 시간."},"cancelled_at":{"type":"number","title":"현금영수증 취소 시간","description":"현금영수증 취소 시간.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."}},"required":["imp_uid","receipt_uid","apply_num","type","amount","vat","receipt_url","applied_at","cancelled_at"],"description":"현금 영수증 정보."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"현금 영수증 취소하기."},{"method":"post","path":"/users/getToken","name":"users_getToken_post","parameters":[{"type":"object","properties":{"imp_key":{"type":"string","title":"API 키","description":"API 키."},"imp_secret":{"type":"string","title":"Secret 키","description":"Secret 키."}},"required":["imp_key","imp_secret"],"description":"아임포트에서 부여해 준 API 및 secret 키."}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"now":{"type":"number","title":"토큰 발행 시간","description":"토큰 발행 시간."},"expired_at":{"type":"number","title":"토큰 만료 시간","description":"토큰 만료 시간.\n\n리눅스 타임이 기준이며, 이를 JS 에서 사용하려거든, 아래와 같이 변환해야 한다.\n\n```typescript\nnew Date(user.expired_at * 1_000);\n```"},"access_token":{"type":"string","title":"유저 인증 토큰","description":"유저 인증 토큰."}},"required":["now","expired_at","access_token"],"description":"아임포트 유저 인증 정보.\n\n아임포트는 고객사에게 API 및 secret 키 정보, {@link IIamportUser.IAccessor} 를 발급해준다.\n\n하지만 이를 곧장 아임포트의 유저 인증에 사용할 수는 없고, 해당 API 및 secret 키를 토대로 유저\n인증 토큰을 발급받아야 하는데, 이 유저 인증 토큰에는 하필이면 만로 시간이라는 게 존재한다.\n`IIamportUser` 는 바로 이러한 유저 인증 토큰 및 그것의 만료 시간을 형상화한 자료구조\n인터페이스이다.\n\n더하여 이처럼 만료 시간이 존재하는 아임포트의 유저 인증 토큰의 특성상, 이것의 만료 시간이\n초과되지 않도록 관리하는 것은 매우 힘든 일이다. 이에 `iamport-server-api` 에서는 아임포트\n유저 인증 토큰이 만료될 때마다 자동 갱신해주는, {@link IamportConnector} 클래스를 제공한다."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"유저 인증 토큰 발행하기.\n\n아임포트에 가입하여 부여받은 API 및 secret 키를 토대로, 유저 인증 토큰을 발행한다.\n\n단, 아임포트가 발급해주는 유저 인증 토큰에는 유효 시간 {@link IIamportUser.expired_at}\n이 있어, 해당 시간이 지나거든 기 발급 토큰이 만료되어 더 이상 쓸 수 없게 된다. 때문에\n아임포트의 이러한 시간 제한에 구애받지 않고 자유로이 아임포트의 API 를 이용하고 싶다면,\n`iamport-server-api` 에서 제공해주는 {@link IamportConnector} 를 활용하도록 하자."},{"method":"post","path":"/vbanks","name":"vbanks_post","parameters":[{"type":"object","properties":{"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"amount":{"type":"number","title":"총액","description":"총액."},"vbank_code":{"type":"string","title":"가상계좌 은행 코드","description":"가상계좌 은행 코드."},"vbank_due":{"type":"number","title":"가상계좌 입금기한, 유닉스 타임","description":"가상계좌 입금기한, 유닉스 타임."},"vbank_holder":{"type":"string","title":"예금주","description":"예금주."},"name":{"type":"string"},"buyer_name":{"type":"string"},"buyer_email":{"type":"string"},"buyer_tel":{"type":"string"},"buyer_addr":{"type":"string"},"buyer_postcode":{"type":"string"},"pg":{"type":"string"},"notice_url":{"type":"string","title":"가상 계좌 입금 정보를 수신할 URL","description":"가상 계좌 입금 정보를 수신할 URL.\n\n누락시 기본 웹훅 URL 사용."},"custom_data":{"type":"string","title":"커스텀 데이터, 자유롭게 사용 가능","description":"커스텀 데이터, 자유롭게 사용 가능."},"pg_api_key":{"type":"string","title":"[이니시스 전용] 가맹점 콘솔에서 확인한 API 값","description":"[이니시스 전용] 가맹점 콘솔에서 확인한 API 값."}},"required":["merchant_uid","amount","vbank_code","vbank_due","vbank_holder"],"description":"가상 계좌 결제 입력 정보.\n\n가상 계좌를 임의 생성할 수 있다.\n\n단, 일부 PG 사 혹은 `fake-iamport-server` 만 가능.\n\n - 세틀뱅크\n - 나이스페이먼츠\n - KG이니시스"}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"vbank_code":{"type":"string","title":"가상 계좌 식별자 코드","description":"가상 계좌 식별자 코드."},"vbank_name":{"type":"string","description":"가상 게좌 이름"},"vbank_num":{"type":"string","description":"가상 계좌 번호"},"vbank_holder":{"type":"string","title":"가상 계좌 예금주","description":"가상 계좌 예금주."},"vbank_date":{"type":"number","title":"가상 계좌 입금 만료 기한","description":"가상 계좌 입금 만료 기한."},"vbank_issued_at":{"type":"number","title":"가상 계좌 개설 일시","description":"가상 계좌 개설 일시."},"pay_method":{"type":"string","enum":["vbank"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["vbank_code","vbank_name","vbank_num","vbank_holder","vbank_date","vbank_issued_at","pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"가상 계좌 결제 정보."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"가상 계좌 발급하기."},{"method":"put","path":"/vbanks","name":"vbanks_put","parameters":[{"type":"object","properties":{"imp_uid":{"type":"string","title":"대상 결제 기록의 {@link IIamportPayment.imp_uid}","description":"대상 결제 기록의 {@link IIamportPayment.imp_uid}."},"amount":{"type":"number","title":"수정할 결제 금액","description":"수정할 결제 금액."},"vbank_due":{"type":"number","title":"수정할 가상계좌 입금 기한","description":"수정할 가상계좌 입금 기한."}},"required":["imp_uid"],"description":"가상 계좌 결제의 수정 입력 정보.\n\n아직 입금되지 않은 가상계좌의 입금기한 또는 입금금액을 수정할 수 있다.\n\n다만, 세틀뱅크 혹은 `fake-iamport-server` 만 가능."}],"output":{"type":"object","properties":{"code":{"type":"number","title":"에러 코드","description":"에러 코드.\n\n값이 0 이면 오류가 없다는 뜻."},"message":{"type":"string","title":"성공 또는 오류 메시지","description":"성공 또는 오류 메시지."},"response":{"type":"object","properties":{"vbank_code":{"type":"string","title":"가상 계좌 식별자 코드","description":"가상 계좌 식별자 코드."},"vbank_name":{"type":"string","description":"가상 게좌 이름"},"vbank_num":{"type":"string","description":"가상 계좌 번호"},"vbank_holder":{"type":"string","title":"가상 계좌 예금주","description":"가상 계좌 예금주."},"vbank_date":{"type":"number","title":"가상 계좌 입금 만료 기한","description":"가상 계좌 입금 만료 기한."},"vbank_issued_at":{"type":"number","title":"가상 계좌 개설 일시","description":"가상 계좌 개설 일시."},"pay_method":{"type":"string","enum":["vbank"]},"imp_uid":{"type":"string","title":"결제 정보 {@link IIamportPayment} 의 식별자 키","description":"결제 정보 {@link IIamportPayment} 의 식별자 키."},"merchant_uid":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다."},"name":{"type":"string","nullable":true,"title":"주문명, 누락 가능","description":"주문명, 누락 가능."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"cancel_amount":{"type":"number","title":"결제 취소, 환불 총액","description":"결제 취소, 환불 총액."},"currency":{"type":"string","enum":["KRW","USD","EUR","JPY"]},"receipt_url":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."},"cash_receipt_issue":{"type":"boolean","title":"현금 영수증 발행 여부","description":"현금 영수증 발행 여부."},"channel":{"type":"string"},"pg_provider":{"type":"string"},"emb_pg_provider":{"type":"string","nullable":true},"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"escrow":{"type":"boolean"},"buyer_name":{"type":"string","nullable":true},"buyer_email":{"type":"string","format":"email","nullable":true},"buyer_tel":{"type":"string","nullable":true},"buyer_addr":{"type":"string","nullable":true},"buyer_postcode":{"type":"string","nullable":true},"customer_uid":{"type":"string","nullable":true},"customer_uid_usage":{"type":"string","nullable":true},"custom_data":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"status":{"type":"string","enum":["paid","ready","failed","cancelled"]},"started_at":{"type":"number","title":"결제 신청 일시","description":"결제 신청 일시.\n\n리눅스 타임이 쓰임."},"paid_at":{"type":"number","title":"결제 (지불) 완료 일시","description":"결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"failed_at":{"type":"number","title":"결제 실패 일시","description":"결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"cancelled_at":{"type":"number","title":"결제 취소 일시","description":"결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀."},"fail_reason":{"type":"string","nullable":true},"cancel_reason":{"type":"string","nullable":true},"cancel_history":{"type":"array","items":{"type":"object","properties":{"pg_id":{"type":"string"},"pg_tid":{"type":"string"},"amount":{"type":"number"},"cancelled_at":{"type":"number"},"reason":{"type":"string"},"receipt_url":{"type":"string","format":"uri"}},"required":["pg_id","pg_tid","amount","cancelled_at","reason","receipt_url"],"description":"결제 취소 정보."}}},"required":["vbank_code","vbank_name","vbank_num","vbank_holder","vbank_date","vbank_issued_at","pay_method","imp_uid","merchant_uid","name","amount","cancel_amount","currency","receipt_url","cash_receipt_issue","channel","pg_provider","emb_pg_provider","pg_id","pg_tid","escrow","buyer_name","buyer_email","buyer_tel","buyer_addr","buyer_postcode","customer_uid","customer_uid_usage","custom_data","user_agent","status","started_at","paid_at","failed_at","cancelled_at","fail_reason","cancel_reason","cancel_history"],"description":"가상 계좌 결제 정보."}},"required":["code","message","response"],"description":"아임포트 고유의 응답 데이터."},"description":"가상 계좌 편집하기."}],"errors":[],"options":{"keyword":false,"separate":null}} \ No newline at end of file diff --git a/examples/positional/petstore.json b/examples/positional/petstore.json index c320973..01cf61e 100644 --- a/examples/positional/petstore.json +++ b/examples/positional/petstore.json @@ -1,1197 +1 @@ -{ - "openapi": "3.0.3", - "functions": [ - { - "method": "post", - "path": "/pet", - "name": "pet_post", - "parameters": [ - { - "required": [ - "name", - "photoUrls" - ], - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "name": { - "type": "string", - "example": "doggie" - }, - "category": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 1 - }, - "name": { - "type": "string", - "example": "Dogs" - } - }, - "xml": { - "name": "category" - } - }, - "photoUrls": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "string", - "xml": { - "name": "photoUrl" - } - } - }, - "tags": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "xml": { - "name": "tag" - } - } - }, - "status": { - "type": "string", - "enum": [ - "available", - "pending", - "sold" - ], - "description": "pet status in the store" - } - }, - "xml": { - "name": "pet" - } - } - ], - "output": { - "required": [ - "name", - "photoUrls" - ], - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "name": { - "type": "string", - "example": "doggie" - }, - "category": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 1 - }, - "name": { - "type": "string", - "example": "Dogs" - } - }, - "xml": { - "name": "category" - } - }, - "photoUrls": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "string", - "xml": { - "name": "photoUrl" - } - } - }, - "tags": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "xml": { - "name": "tag" - } - } - }, - "status": { - "type": "string", - "enum": [ - "available", - "pending", - "sold" - ], - "description": "pet status in the store" - } - }, - "xml": { - "name": "pet" - } - }, - "description": "Add a new pet to the store" - }, - { - "method": "put", - "path": "/pet", - "name": "pet_put", - "parameters": [ - { - "required": [ - "name", - "photoUrls" - ], - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "name": { - "type": "string", - "example": "doggie" - }, - "category": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 1 - }, - "name": { - "type": "string", - "example": "Dogs" - } - }, - "xml": { - "name": "category" - } - }, - "photoUrls": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "string", - "xml": { - "name": "photoUrl" - } - } - }, - "tags": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "xml": { - "name": "tag" - } - } - }, - "status": { - "type": "string", - "enum": [ - "available", - "pending", - "sold" - ], - "description": "pet status in the store" - } - }, - "xml": { - "name": "pet" - } - } - ], - "output": { - "required": [ - "name", - "photoUrls" - ], - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "name": { - "type": "string", - "example": "doggie" - }, - "category": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 1 - }, - "name": { - "type": "string", - "example": "Dogs" - } - }, - "xml": { - "name": "category" - } - }, - "photoUrls": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "string", - "xml": { - "name": "photoUrl" - } - } - }, - "tags": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "xml": { - "name": "tag" - } - } - }, - "status": { - "type": "string", - "enum": [ - "available", - "pending", - "sold" - ], - "description": "pet status in the store" - } - }, - "xml": { - "name": "pet" - } - }, - "description": "Update an existing pet by Id" - }, - { - "method": "get", - "path": "/pet/findByStatus", - "name": "pet_findByStatus_get", - "parameters": [ - { - "type": "object", - "properties": {}, - "required": [] - } - ], - "output": { - "type": "array", - "items": { - "required": [ - "name", - "photoUrls" - ], - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "name": { - "type": "string", - "example": "doggie" - }, - "category": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 1 - }, - "name": { - "type": "string", - "example": "Dogs" - } - }, - "xml": { - "name": "category" - } - }, - "photoUrls": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "string", - "xml": { - "name": "photoUrl" - } - } - }, - "tags": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "xml": { - "name": "tag" - } - } - }, - "status": { - "type": "string", - "enum": [ - "available", - "pending", - "sold" - ], - "description": "pet status in the store" - } - }, - "xml": { - "name": "pet" - } - } - }, - "description": "Finds Pets by status.\n\nMultiple status values can be provided with comma separated strings" - }, - { - "method": "get", - "path": "/pet/findByTags", - "name": "pet_findByTags_get", - "parameters": [ - { - "type": "object", - "properties": { - "tags": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Tags to filter by" - } - }, - "required": [] - } - ], - "output": { - "type": "array", - "items": { - "required": [ - "name", - "photoUrls" - ], - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "name": { - "type": "string", - "example": "doggie" - }, - "category": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 1 - }, - "name": { - "type": "string", - "example": "Dogs" - } - }, - "xml": { - "name": "category" - } - }, - "photoUrls": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "string", - "xml": { - "name": "photoUrl" - } - } - }, - "tags": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "xml": { - "name": "tag" - } - } - }, - "status": { - "type": "string", - "enum": [ - "available", - "pending", - "sold" - ], - "description": "pet status in the store" - } - }, - "xml": { - "name": "pet" - } - } - }, - "description": "Finds Pets by tags.\n\nMultiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing." - }, - { - "method": "get", - "path": "/pet/{petId}", - "name": "pet_getByPetid", - "parameters": [ - { - "type": "integer", - "format": "int64", - "description": "ID of pet to return" - } - ], - "output": { - "required": [ - "name", - "photoUrls" - ], - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "name": { - "type": "string", - "example": "doggie" - }, - "category": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 1 - }, - "name": { - "type": "string", - "example": "Dogs" - } - }, - "xml": { - "name": "category" - } - }, - "photoUrls": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "string", - "xml": { - "name": "photoUrl" - } - } - }, - "tags": { - "type": "array", - "xml": { - "wrapped": true - }, - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "xml": { - "name": "tag" - } - } - }, - "status": { - "type": "string", - "enum": [ - "available", - "pending", - "sold" - ], - "description": "pet status in the store" - } - }, - "xml": { - "name": "pet" - } - }, - "description": "Find pet by ID.\n\nReturns a single pet" - }, - { - "method": "post", - "path": "/pet/{petId}", - "name": "pet_postByPetid", - "parameters": [ - { - "type": "integer", - "format": "int64", - "description": "ID of pet that needs to be updated" - }, - { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of pet that needs to be updated" - }, - "status": { - "type": "string", - "description": "Status of pet that needs to be updated" - } - }, - "required": [] - } - ], - "description": "" - }, - { - "method": "delete", - "path": "/pet/{petId}", - "name": "pet_eraseByPetid", - "parameters": [ - { - "type": "integer", - "format": "int64", - "description": "Pet id to delete" - } - ], - "description": "" - }, - { - "method": "get", - "path": "/store/inventory", - "name": "store_inventory_get", - "parameters": [], - "output": { - "type": "object", - "additionalProperties": { - "type": "integer", - "format": "int32" - } - }, - "description": "Returns pet inventories by status.\n\nReturns a map of status codes to quantities" - }, - { - "method": "post", - "path": "/store/order", - "name": "store_order_post", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "petId": { - "type": "integer", - "format": "int64", - "example": 198772 - }, - "quantity": { - "type": "integer", - "format": "int32", - "example": 7 - }, - "shipDate": { - "type": "string", - "format": "date-time" - }, - "status": { - "type": "string", - "enum": [ - "placed", - "approved", - "delivered" - ], - "description": "Order Status" - }, - "complete": { - "type": "boolean" - } - }, - "xml": { - "name": "order" - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "petId": { - "type": "integer", - "format": "int64", - "example": 198772 - }, - "quantity": { - "type": "integer", - "format": "int32", - "example": 7 - }, - "shipDate": { - "type": "string", - "format": "date-time" - }, - "status": { - "type": "string", - "enum": [ - "placed", - "approved", - "delivered" - ], - "description": "Order Status" - }, - "complete": { - "type": "boolean" - } - }, - "xml": { - "name": "order" - } - }, - "description": "Place an order for a pet.\n\nPlace a new order in the store" - }, - { - "method": "get", - "path": "/store/order/{orderId}", - "name": "store_order_getByOrderid", - "parameters": [ - { - "type": "integer", - "format": "int64", - "description": "ID of order that needs to be fetched" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "petId": { - "type": "integer", - "format": "int64", - "example": 198772 - }, - "quantity": { - "type": "integer", - "format": "int32", - "example": 7 - }, - "shipDate": { - "type": "string", - "format": "date-time" - }, - "status": { - "type": "string", - "enum": [ - "placed", - "approved", - "delivered" - ], - "description": "Order Status" - }, - "complete": { - "type": "boolean" - } - }, - "xml": { - "name": "order" - } - }, - "description": "Find purchase order by ID.\n\nFor valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions." - }, - { - "method": "delete", - "path": "/store/order/{orderId}", - "name": "store_order_eraseByOrderid", - "parameters": [ - { - "type": "integer", - "format": "int64", - "description": "ID of the order that needs to be deleted" - } - ], - "description": "Delete purchase order by ID.\n\nFor valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors" - }, - { - "method": "post", - "path": "/user", - "name": "user_post", - "parameters": [ - { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "username": { - "type": "string", - "example": "theUser" - }, - "firstName": { - "type": "string", - "example": "John" - }, - "lastName": { - "type": "string", - "example": "James" - }, - "email": { - "type": "string", - "example": "john@email.com" - }, - "password": { - "type": "string", - "example": "12345" - }, - "phone": { - "type": "string", - "example": "12345" - }, - "userStatus": { - "type": "integer", - "description": "User Status", - "format": "int32", - "example": 1 - } - }, - "xml": { - "name": "user" - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "username": { - "type": "string", - "example": "theUser" - }, - "firstName": { - "type": "string", - "example": "John" - }, - "lastName": { - "type": "string", - "example": "James" - }, - "email": { - "type": "string", - "example": "john@email.com" - }, - "password": { - "type": "string", - "example": "12345" - }, - "phone": { - "type": "string", - "example": "12345" - }, - "userStatus": { - "type": "integer", - "description": "User Status", - "format": "int32", - "example": 1 - } - }, - "xml": { - "name": "user" - } - }, - "description": "Create user.\n\nThis can only be done by the logged in user." - }, - { - "method": "post", - "path": "/user/createWithList", - "name": "user_createWithList_post", - "parameters": [ - { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "username": { - "type": "string", - "example": "theUser" - }, - "firstName": { - "type": "string", - "example": "John" - }, - "lastName": { - "type": "string", - "example": "James" - }, - "email": { - "type": "string", - "example": "john@email.com" - }, - "password": { - "type": "string", - "example": "12345" - }, - "phone": { - "type": "string", - "example": "12345" - }, - "userStatus": { - "type": "integer", - "description": "User Status", - "format": "int32", - "example": 1 - } - }, - "xml": { - "name": "user" - } - } - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "username": { - "type": "string", - "example": "theUser" - }, - "firstName": { - "type": "string", - "example": "John" - }, - "lastName": { - "type": "string", - "example": "James" - }, - "email": { - "type": "string", - "example": "john@email.com" - }, - "password": { - "type": "string", - "example": "12345" - }, - "phone": { - "type": "string", - "example": "12345" - }, - "userStatus": { - "type": "integer", - "description": "User Status", - "format": "int32", - "example": 1 - } - }, - "xml": { - "name": "user" - } - }, - "description": "Creates list of users with given input array" - }, - { - "method": "get", - "path": "/user/login", - "name": "user_login_get", - "parameters": [ - { - "type": "object", - "properties": { - "username": { - "type": "string", - "description": "The user name for login" - }, - "password": { - "type": "string", - "description": "The password for login in clear text" - } - }, - "required": [] - } - ], - "output": { - "type": "string" - }, - "description": "" - }, - { - "method": "get", - "path": "/user/logout", - "name": "user_logout_get", - "parameters": [], - "description": "" - }, - { - "method": "get", - "path": "/user/{username}", - "name": "user_getByUsername", - "parameters": [ - { - "type": "string", - "description": "The name that needs to be fetched. Use user1 for testing. " - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "username": { - "type": "string", - "example": "theUser" - }, - "firstName": { - "type": "string", - "example": "John" - }, - "lastName": { - "type": "string", - "example": "James" - }, - "email": { - "type": "string", - "example": "john@email.com" - }, - "password": { - "type": "string", - "example": "12345" - }, - "phone": { - "type": "string", - "example": "12345" - }, - "userStatus": { - "type": "integer", - "description": "User Status", - "format": "int32", - "example": 1 - } - }, - "xml": { - "name": "user" - } - }, - "description": "" - }, - { - "method": "put", - "path": "/user/{username}", - "name": "user_putByUsername", - "parameters": [ - { - "type": "string", - "description": "name that need to be deleted" - }, - { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "example": 10 - }, - "username": { - "type": "string", - "example": "theUser" - }, - "firstName": { - "type": "string", - "example": "John" - }, - "lastName": { - "type": "string", - "example": "James" - }, - "email": { - "type": "string", - "example": "john@email.com" - }, - "password": { - "type": "string", - "example": "12345" - }, - "phone": { - "type": "string", - "example": "12345" - }, - "userStatus": { - "type": "integer", - "description": "User Status", - "format": "int32", - "example": 1 - } - }, - "xml": { - "name": "user" - } - } - ], - "description": "Update user.\n\nThis can only be done by the logged in user." - }, - { - "method": "delete", - "path": "/user/{username}", - "name": "user_eraseByUsername", - "parameters": [ - { - "type": "string", - "description": "The name that needs to be deleted" - } - ], - "description": "Delete user.\n\nThis can only be done by the logged in user." - } - ], - "errors": [ - { - "method": "post", - "path": "/pet/{petId}/uploadImage", - "messages": [ - "supports only \"application/json\", \"application/x-www-form-urlencoded\", \"multipart/form-data\" and \"text/plain\" content type in the request body." - ] - } - ], - "options": { - "keyword": false, - "separate": null - } -} \ No newline at end of file +{"openapi":"3.0.3","functions":[{"method":"post","path":"/pet","name":"pet_post","parameters":[{"required":["name","photoUrls"],"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"name":{"type":"string","example":"doggie"},"category":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Dogs"}},"xml":{"name":"category"}},"photoUrls":{"type":"array","xml":{"wrapped":true},"items":{"type":"string","xml":{"name":"photoUrl"}}},"tags":{"type":"array","xml":{"wrapped":true},"items":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}},"xml":{"name":"tag"}}},"status":{"type":"string","enum":["available","pending","sold"],"description":"pet status in the store"}},"xml":{"name":"pet"}}],"output":{"required":["name","photoUrls"],"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"name":{"type":"string","example":"doggie"},"category":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Dogs"}},"xml":{"name":"category"}},"photoUrls":{"type":"array","xml":{"wrapped":true},"items":{"type":"string","xml":{"name":"photoUrl"}}},"tags":{"type":"array","xml":{"wrapped":true},"items":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}},"xml":{"name":"tag"}}},"status":{"type":"string","enum":["available","pending","sold"],"description":"pet status in the store"}},"xml":{"name":"pet"}},"description":"Add a new pet to the store"},{"method":"put","path":"/pet","name":"pet_put","parameters":[{"required":["name","photoUrls"],"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"name":{"type":"string","example":"doggie"},"category":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Dogs"}},"xml":{"name":"category"}},"photoUrls":{"type":"array","xml":{"wrapped":true},"items":{"type":"string","xml":{"name":"photoUrl"}}},"tags":{"type":"array","xml":{"wrapped":true},"items":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}},"xml":{"name":"tag"}}},"status":{"type":"string","enum":["available","pending","sold"],"description":"pet status in the store"}},"xml":{"name":"pet"}}],"output":{"required":["name","photoUrls"],"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"name":{"type":"string","example":"doggie"},"category":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Dogs"}},"xml":{"name":"category"}},"photoUrls":{"type":"array","xml":{"wrapped":true},"items":{"type":"string","xml":{"name":"photoUrl"}}},"tags":{"type":"array","xml":{"wrapped":true},"items":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}},"xml":{"name":"tag"}}},"status":{"type":"string","enum":["available","pending","sold"],"description":"pet status in the store"}},"xml":{"name":"pet"}},"description":"Update an existing pet by Id"},{"method":"get","path":"/pet/findByStatus","name":"pet_findByStatus_get","parameters":[{"type":"object","properties":{},"required":[]}],"output":{"type":"array","items":{"required":["name","photoUrls"],"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"name":{"type":"string","example":"doggie"},"category":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Dogs"}},"xml":{"name":"category"}},"photoUrls":{"type":"array","xml":{"wrapped":true},"items":{"type":"string","xml":{"name":"photoUrl"}}},"tags":{"type":"array","xml":{"wrapped":true},"items":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}},"xml":{"name":"tag"}}},"status":{"type":"string","enum":["available","pending","sold"],"description":"pet status in the store"}},"xml":{"name":"pet"}}},"description":"Finds Pets by status.\n\nMultiple status values can be provided with comma separated strings"},{"method":"get","path":"/pet/findByTags","name":"pet_findByTags_get","parameters":[{"type":"object","properties":{"tags":{"type":"array","items":{"type":"string"},"description":"Tags to filter by"}},"required":[]}],"output":{"type":"array","items":{"required":["name","photoUrls"],"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"name":{"type":"string","example":"doggie"},"category":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Dogs"}},"xml":{"name":"category"}},"photoUrls":{"type":"array","xml":{"wrapped":true},"items":{"type":"string","xml":{"name":"photoUrl"}}},"tags":{"type":"array","xml":{"wrapped":true},"items":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}},"xml":{"name":"tag"}}},"status":{"type":"string","enum":["available","pending","sold"],"description":"pet status in the store"}},"xml":{"name":"pet"}}},"description":"Finds Pets by tags.\n\nMultiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing."},{"method":"get","path":"/pet/{petId}","name":"pet_getByPetid","parameters":[{"type":"integer","format":"int64","description":"ID of pet to return"}],"output":{"required":["name","photoUrls"],"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"name":{"type":"string","example":"doggie"},"category":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Dogs"}},"xml":{"name":"category"}},"photoUrls":{"type":"array","xml":{"wrapped":true},"items":{"type":"string","xml":{"name":"photoUrl"}}},"tags":{"type":"array","xml":{"wrapped":true},"items":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}},"xml":{"name":"tag"}}},"status":{"type":"string","enum":["available","pending","sold"],"description":"pet status in the store"}},"xml":{"name":"pet"}},"description":"Find pet by ID.\n\nReturns a single pet"},{"method":"post","path":"/pet/{petId}","name":"pet_postByPetid","parameters":[{"type":"integer","format":"int64","description":"ID of pet that needs to be updated"},{"type":"object","properties":{"name":{"type":"string","description":"Name of pet that needs to be updated"},"status":{"type":"string","description":"Status of pet that needs to be updated"}},"required":[]}],"description":""},{"method":"delete","path":"/pet/{petId}","name":"pet_eraseByPetid","parameters":[{"type":"integer","format":"int64","description":"Pet id to delete"}],"description":""},{"method":"get","path":"/store/inventory","name":"store_inventory_get","parameters":[],"output":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}},"description":"Returns pet inventories by status.\n\nReturns a map of status codes to quantities"},{"method":"post","path":"/store/order","name":"store_order_post","parameters":[{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"petId":{"type":"integer","format":"int64","example":198772},"quantity":{"type":"integer","format":"int32","example":7},"shipDate":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["placed","approved","delivered"],"description":"Order Status"},"complete":{"type":"boolean"}},"xml":{"name":"order"}}],"output":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"petId":{"type":"integer","format":"int64","example":198772},"quantity":{"type":"integer","format":"int32","example":7},"shipDate":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["placed","approved","delivered"],"description":"Order Status"},"complete":{"type":"boolean"}},"xml":{"name":"order"}},"description":"Place an order for a pet.\n\nPlace a new order in the store"},{"method":"get","path":"/store/order/{orderId}","name":"store_order_getByOrderid","parameters":[{"type":"integer","format":"int64","description":"ID of order that needs to be fetched"}],"output":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"petId":{"type":"integer","format":"int64","example":198772},"quantity":{"type":"integer","format":"int32","example":7},"shipDate":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["placed","approved","delivered"],"description":"Order Status"},"complete":{"type":"boolean"}},"xml":{"name":"order"}},"description":"Find purchase order by ID.\n\nFor valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions."},{"method":"delete","path":"/store/order/{orderId}","name":"store_order_eraseByOrderid","parameters":[{"type":"integer","format":"int64","description":"ID of the order that needs to be deleted"}],"description":"Delete purchase order by ID.\n\nFor valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors"},{"method":"post","path":"/user","name":"user_post","parameters":[{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"username":{"type":"string","example":"theUser"},"firstName":{"type":"string","example":"John"},"lastName":{"type":"string","example":"James"},"email":{"type":"string","example":"john@email.com"},"password":{"type":"string","example":"12345"},"phone":{"type":"string","example":"12345"},"userStatus":{"type":"integer","description":"User Status","format":"int32","example":1}},"xml":{"name":"user"}}],"output":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"username":{"type":"string","example":"theUser"},"firstName":{"type":"string","example":"John"},"lastName":{"type":"string","example":"James"},"email":{"type":"string","example":"john@email.com"},"password":{"type":"string","example":"12345"},"phone":{"type":"string","example":"12345"},"userStatus":{"type":"integer","description":"User Status","format":"int32","example":1}},"xml":{"name":"user"}},"description":"Create user.\n\nThis can only be done by the logged in user."},{"method":"post","path":"/user/createWithList","name":"user_createWithList_post","parameters":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"username":{"type":"string","example":"theUser"},"firstName":{"type":"string","example":"John"},"lastName":{"type":"string","example":"James"},"email":{"type":"string","example":"john@email.com"},"password":{"type":"string","example":"12345"},"phone":{"type":"string","example":"12345"},"userStatus":{"type":"integer","description":"User Status","format":"int32","example":1}},"xml":{"name":"user"}}}],"output":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"username":{"type":"string","example":"theUser"},"firstName":{"type":"string","example":"John"},"lastName":{"type":"string","example":"James"},"email":{"type":"string","example":"john@email.com"},"password":{"type":"string","example":"12345"},"phone":{"type":"string","example":"12345"},"userStatus":{"type":"integer","description":"User Status","format":"int32","example":1}},"xml":{"name":"user"}},"description":"Creates list of users with given input array"},{"method":"get","path":"/user/login","name":"user_login_get","parameters":[{"type":"object","properties":{"username":{"type":"string","description":"The user name for login"},"password":{"type":"string","description":"The password for login in clear text"}},"required":[]}],"output":{"type":"string"},"description":""},{"method":"get","path":"/user/logout","name":"user_logout_get","parameters":[],"description":""},{"method":"get","path":"/user/{username}","name":"user_getByUsername","parameters":[{"type":"string","description":"The name that needs to be fetched. Use user1 for testing. "}],"output":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"username":{"type":"string","example":"theUser"},"firstName":{"type":"string","example":"John"},"lastName":{"type":"string","example":"James"},"email":{"type":"string","example":"john@email.com"},"password":{"type":"string","example":"12345"},"phone":{"type":"string","example":"12345"},"userStatus":{"type":"integer","description":"User Status","format":"int32","example":1}},"xml":{"name":"user"}},"description":""},{"method":"put","path":"/user/{username}","name":"user_putByUsername","parameters":[{"type":"string","description":"name that need to be deleted"},{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"username":{"type":"string","example":"theUser"},"firstName":{"type":"string","example":"John"},"lastName":{"type":"string","example":"James"},"email":{"type":"string","example":"john@email.com"},"password":{"type":"string","example":"12345"},"phone":{"type":"string","example":"12345"},"userStatus":{"type":"integer","description":"User Status","format":"int32","example":1}},"xml":{"name":"user"}}],"description":"Update user.\n\nThis can only be done by the logged in user."},{"method":"delete","path":"/user/{username}","name":"user_eraseByUsername","parameters":[{"type":"string","description":"The name that needs to be deleted"}],"description":"Delete user.\n\nThis can only be done by the logged in user."}],"errors":[{"method":"post","path":"/pet/{petId}/uploadImage","messages":["supports only \"application/json\", \"application/x-www-form-urlencoded\", \"multipart/form-data\" and \"text/plain\" content type in the request body."]}],"options":{"keyword":false,"separate":null}} \ No newline at end of file diff --git a/examples/positional/shopping.json b/examples/positional/shopping.json index bb8fcf7..813d9dc 100644 --- a/examples/positional/shopping.json +++ b/examples/positional/shopping.json @@ -1,50269 +1 @@ -{ - "openapi": "3.0.3", - "functions": [ - { - "method": "get", - "path": "/monitors/health", - "name": "monitors_health_get", - "parameters": [], - "description": "Health check API." - }, - { - "method": "get", - "path": "/monitors/performance", - "name": "monitors_performance_get", - "parameters": [], - "output": { - "type": "object", - "properties": { - "cpu": { - "type": "object", - "properties": { - "user": { - "type": "number" - }, - "system": { - "type": "number" - } - }, - "required": [ - "user", - "system" - ] - }, - "memory": { - "type": "object", - "properties": { - "rss": { - "type": "number" - }, - "heapTotal": { - "type": "number" - }, - "heapUsed": { - "type": "number" - }, - "external": { - "type": "number" - }, - "arrayBuffers": { - "type": "number" - } - }, - "required": [ - "rss", - "heapTotal", - "heapUsed", - "external", - "arrayBuffers" - ] - }, - "resource": { - "type": "object", - "properties": { - "fsRead": { - "type": "number" - }, - "fsWrite": { - "type": "number" - }, - "involuntaryContextSwitches": { - "type": "number" - }, - "ipcReceived": { - "type": "number" - }, - "ipcSent": { - "type": "number" - }, - "majorPageFault": { - "type": "number" - }, - "maxRSS": { - "type": "number" - }, - "minorPageFault": { - "type": "number" - }, - "sharedMemorySize": { - "type": "number" - }, - "signalsCount": { - "type": "number" - }, - "swappedOut": { - "type": "number" - }, - "systemCPUTime": { - "type": "number" - }, - "unsharedDataSize": { - "type": "number" - }, - "unsharedStackSize": { - "type": "number" - }, - "userCPUTime": { - "type": "number" - }, - "voluntaryContextSwitches": { - "type": "number" - } - }, - "required": [ - "fsRead", - "fsWrite", - "involuntaryContextSwitches", - "ipcReceived", - "ipcSent", - "majorPageFault", - "maxRSS", - "minorPageFault", - "sharedMemorySize", - "signalsCount", - "swappedOut", - "systemCPUTime", - "unsharedDataSize", - "unsharedStackSize", - "userCPUTime", - "voluntaryContextSwitches" - ] - } - }, - "required": [ - "cpu", - "memory", - "resource" - ] - }, - "description": "Get performance information.\n\nGet perofmration information composed with CPU, memory and resource usage." - }, - { - "method": "get", - "path": "/monitors/system", - "name": "monitors_system_get", - "parameters": [], - "output": { - "type": "object", - "properties": { - "uid": { - "type": "number", - "title": "Random Unique ID", - "description": "Random Unique ID." - }, - "arguments": { - "type": "array", - "items": { - "type": "string" - }, - "description": "`process.argv`" - }, - "commit": { - "type": "object", - "properties": { - "shortHash": { - "type": "string" - }, - "branch": { - "type": "string" - }, - "hash": { - "type": "string" - }, - "subject": { - "type": "string" - }, - "sanitizedSubject": { - "type": "string" - }, - "body": { - "type": "string" - }, - "author": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "email": { - "type": "string" - } - }, - "required": [ - "name", - "email" - ], - "description": "Git user account info." - }, - "committer": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "email": { - "type": "string" - } - }, - "required": [ - "name", - "email" - ], - "description": "Git user account info." - }, - "authored_at": { - "type": "string" - }, - "commited_at": { - "type": "string" - }, - "notes": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "shortHash", - "branch", - "hash", - "subject", - "sanitizedSubject", - "body", - "author", - "committer", - "authored_at", - "commited_at", - "tags" - ], - "description": "Git commit info." - }, - "package": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "string" - }, - "description": { - "type": "string" - }, - "main": { - "type": "string" - }, - "typings": { - "type": "string" - }, - "scripts": { - "type": "object", - "properties": {}, - "description": "Construct a type with a set of properties K of type T", - "additionalProperties": { - "type": "string" - } - }, - "repository": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "git" - ] - }, - "url": { - "type": "string" - } - }, - "required": [ - "type", - "url" - ] - }, - "author": { - "type": "string" - }, - "license": { - "type": "string" - }, - "bugs": { - "type": "object", - "properties": { - "url": { - "type": "string" - } - }, - "required": [ - "url" - ] - }, - "homepage": { - "type": "string" - }, - "devDependencies": { - "type": "object", - "properties": {}, - "description": "Construct a type with a set of properties K of type T", - "additionalProperties": { - "type": "string" - } - }, - "dependencies": { - "type": "object", - "properties": {}, - "description": "Construct a type with a set of properties K of type T", - "additionalProperties": { - "type": "string" - } - }, - "publishConfig": { - "type": "object", - "properties": { - "registry": { - "type": "string" - } - }, - "required": [ - "registry" - ] - }, - "files": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "name", - "version", - "description", - "scripts", - "repository", - "author", - "license", - "bugs", - "homepage", - "dependencies" - ], - "description": "NPM package info." - }, - "created_at": { - "type": "string", - "title": "Creation time of this server", - "description": "Creation time of this server." - } - }, - "required": [ - "uid", - "arguments", - "commit", - "package", - "created_at" - ], - "description": "System Information." - }, - "description": "Get system information.\n\nGet system information with commit and package information.\n\nAs such information is a type of sensitive, response be encrypted." - }, - { - "method": "get", - "path": "/shoppings/admins/authenticate", - "name": "shoppings_admins_authenticate_get", - "parameters": [], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - "description": "Get administrator information.\n\nGet {@link IShoppingAdministrator.IInvert administrator} information of\ncurrent {@link IShoppingCustomer customer}.\n\nIf current {@link IShoppingMember member} is not an administrator,\nit throws 403 forbidden exception." - }, - { - "method": "post", - "path": "/shoppings/admins/authenticate", - "name": "shoppings_admins_authenticate_post", - "parameters": [ - { - "type": "object", - "properties": {}, - "description": "Joining request info." - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - "description": "Join as an administrator.\n\nJoin as an administrator with {@link IShoppingAdministrator.IJoin joining info}.\n\nThis method is allowed only when the {@link IShoppingCustomer customer} already\nhas joined the {@link IShoppingMember membership}. IF not, he (she) must\naccomplish it before. If not, 403 forbidden exception would be thrown." - }, - { - "method": "put", - "path": "/shoppings/admins/authenticate/login", - "name": "shoppings_admins_authenticate_login_put", - "parameters": [ - { - "type": "object", - "properties": { - "email": { - "type": "string", - "format": "email", - "title": "Email address of member", - "description": "Email address of member.\n\nIf the member has multiple email addresses, just use one of them." - }, - "password": { - "type": "string", - "title": "Password of the member account", - "description": "Password of the member account." - } - }, - "required": [ - "email", - "password" - ], - "description": "Login request info." - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - "description": "Login as an administrator.\n\nLogin as an administrator with {@link IShoppingAdministrator.ILogin login info}.\n\nThis method has exactly same effect with\n{@link ShoppingApi.functional.customers.authenticate.login } function, but\nreturned type is a llttle different. The similar function returns\n{@link IShoppingCustomer } type that starting from the customer information, so\nthat you have to access to the administrator info through\n`customer.member.administrator`. In contrast with that, this method returns\n{@link IShoppingAdministrator.IInvert } type that starting from the administrator\ninfo, so that can access to the customer info through `administrator.customer`.\n\nOf course, to use this function, you had to {@link join } as an administrator\nbefore. If not, 403 forbidden exception would be thrown," - }, - { - "method": "delete", - "path": "/shoppings/admins/coupons/{id}", - "name": "shoppings_admins_coupons_eraseById", - "parameters": [ - { - "type": "string", - "description": "Target coupon's " - } - ], - "description": "Erase a coupon.\n\nErase a {@link IShoppingCoupon coupon} with given ID.\n\nFor reference, if there're some {@link IShoppingCouponTicket tickets}\nwhich are already issued from the target coupon, they would not be affected.\nThose tickets are still valid until their expration time." - }, - { - "method": "post", - "path": "/shoppings/admins/deposits", - "name": "shoppings_admins_deposits_post", - "parameters": [ - { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - -1, - 1 - ] - } - }, - "required": [ - "code", - "source", - "direction" - ] - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "created_at", - "code", - "source", - "direction" - ] - }, - "description": "Create a new deposit metadata.\n\nCreate a new {@link IShoppingDeposit deposit} metadata.\n\nThis action means that adding a new origin reason of deposit's income/outcome.\nOf course, creating a new deposit record does not mean that automatically\nincrease or decrease the {@link IShoppingCustomer customer}'s balance\nfollowing the record's reason why. The logic must be developed manually\nin the backend side." - }, - { - "method": "patch", - "path": "/shoppings/admins/deposits", - "name": "shoppings_admins_deposits_patch", - "parameters": [ - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "source": { - "type": "string" - }, - "code": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - -1, - 1 - ] - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-deposit.source", - "-deposit.code", - "-deposit.direction", - "+deposit.source", - "+deposit.code", - "+deposit.direction" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "created_at", - "code", - "source", - "direction" - ] - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "Get deposit metadata list.\n\nList up every {@link IShoppingDeposit deposit} metadata informations\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingDeposit.IRequest.search search condition} in the request body.\nAlso, it is possible to customize sequence order of records by configuring\n{@link IShoppingDeposit.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/admins/deposits/{id}", - "name": "shoppings_admins_deposits_getById", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target deposit's " - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "created_at", - "code", - "source", - "direction" - ] - }, - "description": "Get a deposit metadata.\n\nGet a {@link IShoppingDeposit deposit} metadata information with its ID." - }, - { - "method": "delete", - "path": "/shoppings/admins/deposits/{id}", - "name": "shoppings_admins_deposits_eraseById", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target deposit's " - } - ], - "description": "Erase a deposit metadata.\n\nErase a {@link IShoppingDeposit deposit} metadata, so that no more\n{@link IShoppingCustomer customer}'s balance does not be increased or\ndecreased by the deposit's reason why." - }, - { - "method": "get", - "path": "/shoppings/admins/deposits/{code}/get", - "name": "shoppings_admins_deposits_get_getByCode", - "parameters": [ - { - "type": "string", - "description": "" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "created_at", - "code", - "source", - "direction" - ] - }, - "description": "Get a deposit metadata by its code.\n\nGet a {@link IShoppingDeposit deposit} metadata information with its code." - }, - { - "method": "post", - "path": "/shoppings/admins/mileages", - "name": "shoppings_admins_mileages_post", - "parameters": [ - { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - -1, - 1 - ] - }, - "value": { - "type": "number", - "nullable": true - } - }, - "required": [ - "code", - "source", - "direction", - "value" - ] - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "value", - "created_at", - "code", - "source", - "direction" - ] - }, - "description": "Create a new mileage metadata.\n\nCreate a new {@link IShoppingMileage mileage} metadata.\n\nThis action means that adding a new origin reason of mileage's income/outcome.\nOf course, creating a new mileage record does not mean that automatically\nincrease or decrease the {@link IShoppingCustomer customer}'s balance\nfollowing the record's reason why. The logic must be developed manually\nin the backend side." - }, - { - "method": "patch", - "path": "/shoppings/admins/mileages", - "name": "shoppings_admins_mileages_patch", - "parameters": [ - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "source": { - "type": "string" - }, - "code": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - -1, - 1 - ] - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-mileage.source", - "-mileage.code", - "-mileage.direction", - "+mileage.source", - "+mileage.code", - "+mileage.direction" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "value", - "created_at", - "code", - "source", - "direction" - ] - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "Get mileage metadata list.\n\nList up every {@link IShoppingMileage mileage} metadata informations\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingMileage.IRequest.search search condition} in the request body.\nAlso, it is possible to customize sequence order of records by configuring\n{@link IShoppingMileage.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/admins/mileages/{id}", - "name": "shoppings_admins_mileages_getById", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target mileage's " - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "value", - "created_at", - "code", - "source", - "direction" - ] - }, - "description": "Get a mileage metadata.\n\nGet a {@link IShoppingMileage mileage} metadata information with its ID." - }, - { - "method": "delete", - "path": "/shoppings/admins/mileages/{id}", - "name": "shoppings_admins_mileages_eraseById", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target mileage's " - } - ], - "description": "Erase a mileage metadata.\n\nErase a {@link IShoppingMileage mileage} metadata, so that no more\n{@link IShoppingCustomer customer}'s balance does not be increased or\ndecreased by the mileage's reason why." - }, - { - "method": "get", - "path": "/shoppings/admins/mileages/{code}/get", - "name": "shoppings_admins_mileages_get_getByCode", - "parameters": [ - { - "type": "string", - "description": "" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "value", - "created_at", - "code", - "source", - "direction" - ] - }, - "description": "Get a mileage metadata by its code.\n\nGet a {@link IShoppingMileage mileage} metadata information with its code." - }, - { - "method": "post", - "path": "/shoppings/admins/mileages/donations", - "name": "shoppings_admins_mileages_donations_post", - "parameters": [ - { - "type": "object", - "properties": { - "citizen_id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number" - }, - "reason": { - "type": "string" - } - }, - "required": [ - "citizen_id", - "value", - "reason" - ] - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "administrator": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "value": { - "type": "number" - }, - "reason": { - "type": "string" - }, - "created_at": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "id", - "administrator", - "citizen", - "value", - "reason", - "created_at" - ] - }, - "description": "Donate a mileage to a citizen.\n\nDonate a mileage to a specific {@link IShoppingCitizen citizen} from\ncurrent {@link IShoppingAdministrator administrator}, with detailed\nreason why.\n\nNote that, as donating mileage affects to the citizen's balance and\ncurrent shopping mall's operating profit, administrator must archive\nthe detailed reason why the mileage is donated." - }, - { - "method": "patch", - "path": "/shoppings/admins/mileages/donations", - "name": "shoppings_admins_mileages_donations_patch", - "parameters": [ - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "mobile": { - "type": "string", - "pattern": "^[0-9]*$" - }, - "name": { - "type": "string" - } - } - }, - "minimum": { - "type": "number", - "minimum": 0 - }, - "maximum": { - "type": "number", - "minimum": 0 - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-donation.created_at", - "-donation.value", - "-donation.reason", - "+donation.created_at", - "+donation.value", - "+donation.reason" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "administrator": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "value": { - "type": "number" - }, - "reason": { - "type": "string" - }, - "created_at": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "id", - "administrator", - "citizen", - "value", - "reason", - "created_at" - ] - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every mileage donation histories.\n\nList up every {@link IShoppingMileageDonation mileage donation histories}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingMileageDonation.IRequest.search search condition} in\nthe request body. Also, it is possible to customize sequence order of\nrecords by configuring {@link IShoppingMileageDonation.IRequest.sort sort}." - }, - { - "method": "get", - "path": "/shoppings/admins/mileages/donations/{id}", - "name": "shoppings_admins_mileages_donations_getById", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target history's " - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "administrator": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "value": { - "type": "number" - }, - "reason": { - "type": "string" - }, - "created_at": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "id", - "administrator", - "citizen", - "value", - "reason", - "created_at" - ] - }, - "description": "Get a mileage donation history.\n\nGet a {@link IShoppingMileageDonation mileage donation history} with its ID." - }, - { - "method": "post", - "path": "/shoppings/admins/sales/{saleId}/questions/{inquiryId}/comments", - "name": "shoppings_admins_sales_questions_comments_postBySaleidAndInquiryid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target inquiry's " - }, - { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales." - }, - { - "method": "patch", - "path": "/shoppings/admins/sales/{saleId}/questions/{inquiryId}/comments", - "name": "shoppings_admins_sales_questions_comments_patchBySaleidAndInquiryid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "body": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the comments with pagination and searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales." - }, - { - "method": "get", - "path": "/shoppings/admins/sales/{saleId}/questions/{inquiryId}/comments/{id}", - "name": "shoppings_admins_sales_questions_comments_getBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales." - }, - { - "method": "put", - "path": "/shoppings/admins/sales/{saleId}/questions/{inquiryId}/comments/{id}", - "name": "shoppings_admins_sales_questions_comments_putBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - }, - { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot content of the comment." - }, - "description": "Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." - }, - { - "method": "patch", - "path": "/shoppings/admins/sales/{saleId}/questions", - "name": "shoppings_admins_sales_questions_patchBySaleid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "secret", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at" - ], - "description": "Summarized information of the question." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every summarized questions.\n\nList up every {@link IShoppingSaleQuestion.ISummary summarized questions} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned questions are summarized, not detailed. If you want\nto get the detailed information of a question, use {@link adridges } function\nor {@link at } function for each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.ISummary.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.ISummary.secret } with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." - }, - { - "method": "patch", - "path": "/shoppings/admins/sales/{saleId}/questions/abridges", - "name": "shoppings_admins_sales_questions_abridges_patchBySaleid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "secret", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "description": "Abridged information of the question." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every abridged questions.\n\nList up every {@link IShoppingSaleQuestion.IAbridge abridged questions} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned questions are abridged, not detailed. If you want\nto get the detailed information of a question, use {@link at } function\nfor each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.IAridge.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.IAridge.secret } with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/admins/sales/{saleId}/questions/{id}", - "name": "shoppings_admins_sales_questions_getBySaleidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target question's " - } - ], - "output": { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "type": { - "type": "string", - "enum": [ - "question" - ], - "title": "Type of the derived inquiry", - "description": "Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion }\n- `review`: {@link IShoppingSaleReview }" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "seller", - "id", - "snapshots", - "created_at" - ], - "description": "Formal answer for the inquiry by the seller.", - "title": "Formal answer for the inquiry by the seller", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "secret", - "type", - "customer", - "answer", - "read_by_seller", - "id", - "snapshots", - "created_at" - ], - "description": "Question about sale snapshot.\n\n`IShoppingSaleQuestion` is a subtype entity of {@link IShoppingSaleInquiry },\nand is used when a {@link IShoppingCustomer customer} wants to ask something\nabout a {@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at\nthe time) registered by the {@link IShoppingSeller seller}.\n\nAnd, like most shopping malls, `IShoppingSaleQuestion` also provides\na {@link secret } attribute, allowing you to create a \"secret message\" that can\nonly be viewed by the seller and the customer who wrote the question." - }, - "description": "Get a question info.\n\nGet a detailed {@link IShoppingSaleQuestion question} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s question. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nquestions of the sales except the {@link IShoppingSaleQuestion.secret }\nvalue is `false`." - }, - { - "method": "post", - "path": "/shoppings/admins/sales/{saleId}/reviews/{inquiryId}/comments", - "name": "shoppings_admins_sales_reviews_comments_postBySaleidAndInquiryid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target inquiry's " - }, - { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales." - }, - { - "method": "patch", - "path": "/shoppings/admins/sales/{saleId}/reviews/{inquiryId}/comments", - "name": "shoppings_admins_sales_reviews_comments_patchBySaleidAndInquiryid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "body": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the comments with pagination and searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales." - }, - { - "method": "get", - "path": "/shoppings/admins/sales/{saleId}/reviews/{inquiryId}/comments/{id}", - "name": "shoppings_admins_sales_reviews_comments_getBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales." - }, - { - "method": "put", - "path": "/shoppings/admins/sales/{saleId}/reviews/{inquiryId}/comments/{id}", - "name": "shoppings_admins_sales_reviews_comments_putBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - }, - { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot content of the comment." - }, - "description": "Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." - }, - { - "method": "patch", - "path": "/shoppings/admins/sales/{saleId}/reviews", - "name": "shoppings_admins_sales_reviews_patchBySaleid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - }, - "minimum": { - "type": "number", - "minimum": 0, - "maximum": 100 - }, - "maximum": { - "type": "number", - "minimum": 0, - "maximum": 100 - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at", - "-score", - "+score" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "score": { - "type": "number", - "title": "Score of the review", - "description": "Score of the review." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "score", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at" - ], - "description": "Summarized information of the review." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every summarized reviews.\n\nList up every {@link IShoppingSaleReview.ISummary summarized reviews} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned reviews are summarized, not detailed. If you want\nto get the detailed information of a review, use {@link adridges } function\nor {@link at } function for each article.\n\nAlso, returned review has {@link IShoppingSaleReview.ISummary.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." - }, - { - "method": "patch", - "path": "/shoppings/admins/sales/{saleId}/reviews/abridges", - "name": "shoppings_admins_sales_reviews_abridges_patchBySaleid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - }, - "minimum": { - "type": "number", - "minimum": 0, - "maximum": 100 - }, - "maximum": { - "type": "number", - "minimum": 0, - "maximum": 100 - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at", - "-score", - "+score" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "score": { - "type": "number", - "minimum": 0, - "maximum": 100, - "title": "Score of the review", - "description": "Score of the review." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "score", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "description": "Abridged information of the review." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every abridged reviews.\n\nList up every {@link IShoppingSaleReview.IAbridge abridged reviews} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned reviews are abridged, not detailed. If you want\nto get the detailed information of a review, use {@link at } function\nfor each article.\n\nAlso, returned review has {@link IShoppingSaleReview.IAridge.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/admins/sales/{saleId}/reviews/{id}", - "name": "shoppings_admins_sales_reviews_getBySaleidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target review's " - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "review" - ], - "title": "Type of the derived inquiry", - "description": "Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion }\n- `review`: {@link IShoppingSaleReview }" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "seller", - "id", - "snapshots", - "created_at" - ], - "description": "Formal answer for the inquiry by the seller.", - "title": "Formal answer for the inquiry by the seller", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "score": { - "type": "number", - "minimum": 0, - "maximum": 100, - "title": "Score of the review", - "description": "Score of the review." - }, - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "score", - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot content of the review article." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "type", - "customer", - "answer", - "read_by_seller", - "id", - "snapshots", - "created_at" - ], - "description": "Reviews for sale snapshots.\n\n`IShoppingSaleReview` is a subtype entity of {@link IShoppingSaleInquiry },\nand is used when a {@link IShoppingCustomer customer} purchases a\n{@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at the time)\nregistered by the {@link IShoppingSeller seller} as a product and leaves a\nreview and rating for it.\n\nFor reference, `IShoppingSaleReview` and\n{@link IShoppingOrderGod shopping_order_goods} have a logarithmic relationship\nof N: 1, but this does not mean that customers can continue to write reviews\nfor the same product indefinitely. Wouldn't there be restrictions, such as\nif you write a review once, you can write an additional review a month later?" - }, - "description": "Get a review info.\n\nGet a detailed {@link IShoppingSaleReview review} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s review. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nreviews of the sales." - }, - { - "method": "put", - "path": "/shoppings/admins/systematic/channels/{channelCode}/categories/{id}", - "name": "shoppings_admins_systematic_channels_categories_putByChannelcodeAndId", - "parameters": [ - { - "type": "string", - "description": "Belonged channel's " - }, - { - "type": "string", - "description": "Target category's " - }, - { - "type": "object", - "properties": { - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent category's ID", - "description": "Parent category's ID." - }, - "name": { - "type": "string", - "title": "Representative name of the category", - "description": "Representative name of the category.\n\nThe name must be unique within the parent category. If no parent exists,\nthen the name must be unique within the channel between no parent\ncategories." - } - }, - "required": [ - "parent_id", - "name" - ], - "description": "Creation information of the category." - } - ], - "description": "Update a category.\n\nUpdate a {@link IShoppingChannelCategory category}'s name. If required,\nit is possible to change the parent category by its ID. Of course, detaching\nfrom the parent category so that becoming the root category is also possible." - }, - { - "method": "delete", - "path": "/shoppings/admins/systematic/channels/{channelCode}/categories/merge", - "name": "shoppings_admins_systematic_channels_categories_merge_eraseByChannelcode", - "parameters": [ - { - "type": "string", - "description": "Belonged channel's " - }, - { - "type": "object", - "properties": { - "keep": { - "type": "string", - "format": "uuid", - "title": "Target record to keep after merging", - "description": "Target record to keep after merging.\n\nAfter merge process, {@link absorbed } records would be merged into\nthis {@link keep } record." - }, - "absorbed": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - }, - "title": "To be absorbed to {@link keep } after merging", - "description": "To be absorbed to {@link keep } after merging." - } - }, - "required": [ - "keep", - "absorbed" - ], - "description": "Record Merge DTO.\n\n`IRecordMerge` is a structure for merging records.\n\nThe `merge` means that merging multiple {@link IRecordMerge.absorbed }\nrecords into {@link IRecordMerge.keep } instead of deleting\n{@link IRecordMerge.absorbed } records.\n\nIf there're some dependent tables of the target `table` having\nunique constraint on foriegn key column, such dependent tables\nalso perform the merge process, too.\n\nOf course, if there're another dependent tables under those\ndependents, they also perform the merge process recursively as well.\nSuch recursive merge process still works for self-recursive\n(tree-structured) tables." - } - ], - "description": "Merge multiple categories into one.\n\nIn this shopping mall system, it is not possible to delete a\n{@link IShoppingChannelCategory category}, because it is a systematic\nentity affecting to all other core entities like\n{@link IShoppingSale sales}. Instead of deleting, you can merge multiple\ncategories into one.\n\nIf you specify a category to absorb others, then all of other categories\nwill be merged into the specified one. Also, subsidiary entities of\ncategories also be merged and their references also be merged cascadingly." - }, - { - "method": "post", - "path": "/shoppings/admins/systematic/channels", - "name": "shoppings_admins_systematic_channels_post", - "parameters": [ - { - "type": "object", - "properties": { - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "code", - "name" - ], - "description": "Creation information of the channel." - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "description": "Create a new channel.\n\nCreate a new {@link IShoppingChannel channel} with given code and name.\n\nAs channel means an individual market,\n{@link IShoppingAdministrator administrator} should perform this action\nonly when a new application being registered." - }, - { - "method": "patch", - "path": "/shoppings/admins/systematic/channels", - "name": "shoppings_admins_systematic_channels_patch", - "parameters": [ - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-channel.code", - "-channel.name", - "-channel.created_at", - "+channel.code", - "+channel.name", - "+channel.created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the channels with pagination and searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every channels.\n\nList up every {@link IShoppingChannel channels} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingChannel.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingChannel.IRequest.sort sort condition}." - }, - { - "method": "put", - "path": "/shoppings/admins/systematic/channels/{id}", - "name": "shoppings_admins_systematic_channels_putById", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target channel's " - }, - { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "name" - ], - "description": "Updating information of the channel." - } - ], - "description": "Update a channel.\n\nUpdate a {@link IShoppingChannel channel}'s name.\n\nNote that, it is not possible to change the channel's code. If you want to\nto do it forcibly, then {@link create } new one and {@link merge } with it." - }, - { - "method": "delete", - "path": "/shoppings/admins/systematic/channels/merge", - "name": "shoppings_admins_systematic_channels_merge_erase", - "parameters": [ - { - "type": "object", - "properties": { - "keep": { - "type": "string", - "format": "uuid", - "title": "Target record to keep after merging", - "description": "Target record to keep after merging.\n\nAfter merge process, {@link absorbed } records would be merged into\nthis {@link keep } record." - }, - "absorbed": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - }, - "title": "To be absorbed to {@link keep } after merging", - "description": "To be absorbed to {@link keep } after merging." - } - }, - "required": [ - "keep", - "absorbed" - ], - "description": "Record Merge DTO.\n\n`IRecordMerge` is a structure for merging records.\n\nThe `merge` means that merging multiple {@link IRecordMerge.absorbed }\nrecords into {@link IRecordMerge.keep } instead of deleting\n{@link IRecordMerge.absorbed } records.\n\nIf there're some dependent tables of the target `table` having\nunique constraint on foriegn key column, such dependent tables\nalso perform the merge process, too.\n\nOf course, if there're another dependent tables under those\ndependents, they also perform the merge process recursively as well.\nSuch recursive merge process still works for self-recursive\n(tree-structured) tables." - } - ], - "description": "Merge multiple channels into one.\n\nIn this shopping mall system, it is not possible to delete a\n{@link IShoppingChannel channel}, because it is a systematic entity\naffecting to all other core entities like customers, members and\nsales. Instead of deleting, you can merge multiple channels into one.\n\nIf you specify a channel to absorb others, then all of other channels\nwill be merged into the specified one. Also, subsidiary entities of\nchannels also be merged and their references also be merged cascadingly." - }, - { - "method": "post", - "path": "/shoppings/admins/systematic/sections", - "name": "shoppings_admins_systematic_sections_post", - "parameters": [ - { - "type": "object", - "properties": { - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - } - }, - "required": [ - "code", - "name" - ], - "description": "Creation information of the section." - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "code", - "name", - "created_at" - ], - "description": "Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future." - }, - "description": "Create a new section.\n\nCreate a new {@link IShoppingSection section} with given code and name.\n\nAs section means a spatial unit of a market that handling different type\nof products with other section, {@link IShoppingAdministrator administrator}\nshould perform this action only when a new section being required." - }, - { - "method": "patch", - "path": "/shoppings/admins/systematic/sections", - "name": "shoppings_admins_systematic_sections_patch", - "parameters": [ - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-section.code", - "-section.name", - "-section.created_at", - "+section.code", - "+section.name", - "+section.created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the sections with pagination and searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "code", - "name", - "created_at" - ], - "description": "Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every sections.\n\nList up every {@link IShoppingSection sections} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSection.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingSection.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/admins/systematic/sections/{id}", - "name": "shoppings_admins_systematic_sections_getById", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target section's " - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "code", - "name", - "created_at" - ], - "description": "Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future." - }, - "description": "Get a section info.\n\nGet a detailed {@link IShoppingSection section} information." - }, - { - "method": "put", - "path": "/shoppings/admins/systematic/sections/{id}", - "name": "shoppings_admins_systematic_sections_putById", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target section's " - }, - { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - } - }, - "required": [ - "name" - ], - "description": "Updating information of the section." - } - ], - "description": "Update a section.\n\nUpdate a {@link IShoppingSection section}'s name.\n\nNote that, it is not possible to change the section's code. If you want to\nto do it forcibly, then {@link create } new one and {@link merge } with it." - }, - { - "method": "delete", - "path": "/shoppings/admins/systematic/sections/merge", - "name": "shoppings_admins_systematic_sections_merge_erase", - "parameters": [ - { - "type": "object", - "properties": { - "keep": { - "type": "string", - "format": "uuid", - "title": "Target record to keep after merging", - "description": "Target record to keep after merging.\n\nAfter merge process, {@link absorbed } records would be merged into\nthis {@link keep } record." - }, - "absorbed": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - }, - "title": "To be absorbed to {@link keep } after merging", - "description": "To be absorbed to {@link keep } after merging." - } - }, - "required": [ - "keep", - "absorbed" - ], - "description": "Record Merge DTO.\n\n`IRecordMerge` is a structure for merging records.\n\nThe `merge` means that merging multiple {@link IRecordMerge.absorbed }\nrecords into {@link IRecordMerge.keep } instead of deleting\n{@link IRecordMerge.absorbed } records.\n\nIf there're some dependent tables of the target `table` having\nunique constraint on foriegn key column, such dependent tables\nalso perform the merge process, too.\n\nOf course, if there're another dependent tables under those\ndependents, they also perform the merge process recursively as well.\nSuch recursive merge process still works for self-recursive\n(tree-structured) tables." - } - ], - "description": "Merge multiple sections into one.\n\nIn this shopping mall system, it is not possible to delete a\n{@link IShoppingSection section}, because it is a systematic entity\naffecting to all other core entities like {@link IShoppingSale sales}.\nInstead of deleting, you can merge multiple sections into one.\n\nIf you specify a section to absorb others, then all of other sections\nwill be merged into the specified one. Also, subsidiary entities of\nsections also be merged and their references also be merged cascadingly." - }, - { - "method": "get", - "path": "/shoppings/admins/systematic/sections/{code}/get", - "name": "shoppings_admins_systematic_sections_get_getByCode", - "parameters": [ - { - "type": "string", - "description": "Target section's " - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "code", - "name", - "created_at" - ], - "description": "Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future." - }, - "description": "Get a section info by its code.\n\nGet a detailed {@link IShoppingSection section} information by its code." - }, - { - "method": "patch", - "path": "/shoppings/customers/authenticate/refresh", - "name": "shoppings_customers_authenticate_refresh_patch", - "parameters": [ - { - "type": "object", - "properties": { - "value": { - "type": "string" - } - }, - "required": [ - "value" - ] - } - ], - "output": { - "type": "object", - "properties": { - "setHeaders": { - "type": "object", - "properties": { - "Authorization": { - "type": "string" - } - }, - "required": [ - "Authorization" - ] - }, - "token": { - "type": "object", - "properties": { - "access": { - "type": "string" - }, - "refresh": { - "type": "string" - }, - "expired_at": { - "type": "string", - "format": "date-time" - }, - "refreshable_until": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "access", - "refresh", - "expired_at", - "refreshable_until" - ] - }, - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "setHeaders", - "token", - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ] - }, - "description": "Refresh the authentication token.\n\nCreate a new {@link IShoppingCustomer.IToken.access access token} of a\n{@link IShoppingCustomer customer} with the pre-issued\n{@link IShoppingCustomer.IToken.refresh refresh} token.\n\nNote that, this function is available until the\n{@link IShoppingCustomer.IToken.refreshable_until } value." - }, - { - "method": "get", - "path": "/shoppings/customers/authenticate", - "name": "shoppings_customers_authenticate_get", - "parameters": [], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "description": "Get current customer info.\n\nGet current {@link IShoppingCustomer customer} information from the\n{@link IShoppingCustomer.IToken.access access token}." - }, - { - "method": "post", - "path": "/shoppings/customers/authenticate", - "name": "shoppings_customers_authenticate_post", - "parameters": [ - { - "type": "object", - "properties": { - "channel_code": { - "type": "string" - }, - "external_user": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "password": { - "type": "string", - "title": "Password of external user from the external system", - "description": "Password of external user from the external system.\n\nThis is a password issued to the user by an external service,\nand is by no means the actual user password. However, for\n{@link IShoppingCustomer customers} who entered the same\napplication and code as the current external system user, this is\nto determine whether to view this as a correct external system\nuser or a violation." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "citizen", - "application", - "uid", - "nickname", - "password", - "data" - ], - "nullable": true - }, - "href": { - "type": "string", - "format": "uri" - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ] - } - }, - "required": [ - "channel_code", - "external_user", - "href", - "referrer" - ] - } - ], - "output": { - "type": "object", - "properties": { - "setHeaders": { - "type": "object", - "properties": { - "Authorization": { - "type": "string" - } - }, - "required": [ - "Authorization" - ] - }, - "token": { - "type": "object", - "properties": { - "access": { - "type": "string" - }, - "refresh": { - "type": "string" - }, - "expired_at": { - "type": "string", - "format": "date-time" - }, - "refreshable_until": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "access", - "refresh", - "expired_at", - "refreshable_until" - ] - }, - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "setHeaders", - "token", - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ] - }, - "description": "Create a new customer record.\n\nThis shopping mall system defines everyone participating in this market as\na \"customer\". And the customer records are not archived based on individual\n{@link IShoppingCitizen people}, but based on the unit of connection.\nTherefore, even if it is the same person, a new {@link IShoppingCustomer }\nrecord is created every time a connection is made.\n\nTherefore, all Client Applications that access this service must first call\nthis function, report the customer's inflow path to the server, and create\nan {@link IShoppingCustomer.IToken.access access token}. If you skip this\nfunction call, all the other API functions would be prohibited. There is no\nexception, even if you want to {@link activate } your citizenship or\n{@link login } with your {@link IShoppingMember member account}. Before\nauthenticating yourself or logging in, be sure to call this function first.\nThis also applies when an {@link IShoppingAdministrator administrator} or\n{@link IShoppingSeller seller} logs in.\n\nAlso, the authentication token has an\n{@link IShoppingCustomer.IToken.expired_at expiration time}\nand cannot be used permanently. For reference, the authentication token is\nvalid for 3 hours, and if you want to maintain customer authentication even\nafter 3 hours, you must call the {@link refresh } function." - }, - { - "method": "post", - "path": "/shoppings/customers/authenticate/join", - "name": "shoppings_customers_authenticate_join_post", - "parameters": [ - { - "type": "object", - "properties": { - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "citizen": { - "type": "object", - "properties": { - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "mobile", - "name" - ], - "description": "Citizen information.", - "title": "Citizen information", - "nullable": true - }, - "email": { - "type": "string", - "format": "email", - "title": "Email address of member", - "description": "Email address of member.\n\nIf the member has multiple email addresses, just use one of them." - }, - "password": { - "type": "string", - "title": "Password of the member account", - "description": "Password of the member account." - } - }, - "required": [ - "nickname", - "citizen", - "email", - "password" - ], - "description": "Joining request info." - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "description": "Join membership.\n\n{@link IShoppingCustomer Customer} signs up for\n{@link IShoppingMember membership} of current shopping mall system.\n\nIf you've performed the {@link IShoppingCitizen citizenship}\n{@link activate activation} too, then you can skip the {@link activate }\nfunction calling everytime you log in from now on. Also, if the person had\n{@link IShoppingOrder purchased} with {@link activate } and {@link external }\nfunction calling, you can also access to the order history too. In other\nwords, activity details prior to membership registration can also be\naccessed with continuity.\n\nFor reference, as described in the {@link create } function, before calling\nthis `join` function, you must first create a customer record and token by\ncalling the {@link create } function." - }, - { - "method": "put", - "path": "/shoppings/customers/authenticate/login", - "name": "shoppings_customers_authenticate_login_put", - "parameters": [ - { - "type": "object", - "properties": { - "email": { - "type": "string", - "format": "email", - "title": "Email address of member", - "description": "Email address of member.\n\nIf the member has multiple email addresses, just use one of them." - }, - "password": { - "type": "string", - "title": "Password of the member account", - "description": "Password of the member account." - } - }, - "required": [ - "email", - "password" - ], - "description": "Login request info." - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "description": "Membership login.\n\n{@link IShoppingCustomer Customer} logs in with his/her\n{@link IShoppingMember membership} account with the email and password.\n\nIf the {@link IShoppingMember member} has previously performed\n{@link activate citizenship activation}, the {@link IShoppingCustomer.citizen }\nvalue would be filled in accordingly. And if the member has also signed up\nas an {@link IShoppingAdministrator administrator} or\n{@link IShoppingSeller seller}, the relevant information is also entered\naccordingly.\n\nFor reference, as described in the {@link create } function, before calling\nthis `login` function, you must first create a customer record and token by\ncalling the {@link create } function." - }, - { - "method": "post", - "path": "/shoppings/customers/authenticate/activate", - "name": "shoppings_customers_authenticate_activate_post", - "parameters": [ - { - "type": "object", - "properties": { - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "mobile", - "name" - ], - "description": "Creation information of citizen verification." - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "description": "Activate citizenship.\n\n{@link IShoppingCustomer Customer} activates his/her\n{@link IShoppingCitizen citizenship} with mobile number and real name.\n\nIf the custommer already {@link join joined} to the\n{@link IShoppingMember membership}, then you can skip the citizenship\n{@link activation } function calling everytime you log in from now on.\nOf course, such story would be same to the {@link external } function, too.\n\nFor reference, as described in the {@link create } function, before calling\nthis `activate` function, you must first create a customer record and token\nby calling the {@link create } function." - }, - { - "method": "post", - "path": "/shoppings/customers/authenticate/external", - "name": "shoppings_customers_authenticate_external_post", - "parameters": [ - { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "password": { - "type": "string", - "title": "Password of external user from the external system", - "description": "Password of external user from the external system.\n\nThis is a password issued to the user by an external service,\nand is by no means the actual user password. However, for\n{@link IShoppingCustomer customers} who entered the same\napplication and code as the current external system user, this is\nto determine whether to view this as a correct external system\nuser or a violation." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "citizen", - "application", - "uid", - "nickname", - "password", - "data" - ], - "description": "Creation information of external user." - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "description": "Enroll external user info.\n\n{@link IShoppingCustomer Customer} enrolls his/her\n{@link IShoppingExternalUser external user} information from other service.\n\nIt has similar effect with the {@link join membership joining} function,\nso that if you've performed the {@link IShoppingCitizen citizenship}\n{@link activate activation} too, then you can skip the {@link activate }\nfunction calling everytime you call this `external` function with same\ninfo from now on. Also, if the person had\n{@link IShoppingOrder purchased} with {@link activate } and {@link join }\nfunction calling, you can also access to the order history too. In other\nwords, activity details prior to external server registration can also be\naccessed with continuity.\n\nFor reference, as described in the {@link create } function, before calling\nthis `external` function, you must first create a customer record and token\nby calling the {@link create } function." - }, - { - "method": "put", - "path": "/shoppings/customers/authenticate/password/change", - "name": "shoppings_customers_authenticate_password_change_put", - "parameters": [ - { - "type": "object", - "properties": { - "oldbie": { - "type": "string", - "title": "Current password", - "description": "Current password." - }, - "newbie": { - "type": "string", - "title": "The new password to change", - "description": "The new password to change." - } - }, - "required": [ - "oldbie", - "newbie" - ], - "description": "Request info of password change." - } - ], - "description": "Change password.\n\nChange password of {@link IShoppingMember member} with the current password.\n\nThe reason why the current password is required is for security." - }, - { - "method": "post", - "path": "/shoppings/customers/deposits/charges", - "name": "shoppings_customers_deposits_charges_post", - "parameters": [ - { - "type": "object", - "properties": { - "value": { - "type": "number" - } - }, - "required": [ - "value" - ] - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "publish": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "paid_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancelled_at": { - "type": "string", - "format": "date-time", - "nullable": true - } - }, - "required": [ - "id", - "created_at", - "paid_at", - "cancelled_at" - ], - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "value": { - "type": "number" - } - }, - "required": [ - "id", - "customer", - "publish", - "created_at", - "value" - ] - }, - "description": "Create a new deposit charge application.\n\nCreate a new {@link IShoppingDepositCharge deposit charge application}.\n\nBy the way, this function does not mean completion the deposit charge, but\nmeans just {@link IShoppingCustomer customer} is appling the deposit charge.\nThe deposit charge be completed only when customer\n{@link IShoppingDepositChargePublish.publish pay} the deposit charge." - }, - { - "method": "patch", - "path": "/shoppings/customers/deposits/charges", - "name": "shoppings_customers_deposits_charges_patch", - "parameters": [ - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - }, - "minimum": { - "type": "number" - }, - "maximum": { - "type": "number" - }, - "state": { - "type": "string", - "enum": [ - "pending", - "published", - "payed", - "cancelled" - ] - }, - "publish": { - "type": "object", - "properties": { - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - }, - "payment": { - "type": "object", - "properties": { - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - } - } - } - } - } - }, - "required": [ - "state" - ] - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-value", - "-publish.created_at", - "-publish.paid_at", - "+value", - "+publish.created_at", - "+publish.paid_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "publish": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "paid_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancelled_at": { - "type": "string", - "format": "date-time", - "nullable": true - } - }, - "required": [ - "id", - "created_at", - "paid_at", - "cancelled_at" - ], - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "value": { - "type": "number" - } - }, - "required": [ - "id", - "customer", - "publish", - "created_at", - "value" - ] - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every deposit charges.\n\nList up every {@link IShoppingDepositCharge deposit charges} of the\n{@link IShoppingCustomer customer} with {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingDepositCharge.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingDepositCharge.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/customers/deposits/charges/{id}", - "name": "shoppings_customers_deposits_charges_getById", - "parameters": [ - { - "type": "string", - "description": "Target deposit charge's " - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "publish": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "paid_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancelled_at": { - "type": "string", - "format": "date-time", - "nullable": true - } - }, - "required": [ - "id", - "created_at", - "paid_at", - "cancelled_at" - ], - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "value": { - "type": "number" - } - }, - "required": [ - "id", - "customer", - "publish", - "created_at", - "value" - ] - }, - "description": "Get a deposit charge info.\n\nGet a {@link IShoppingDepositCharge deposit charge} information." - }, - { - "method": "put", - "path": "/shoppings/customers/deposits/charges/{id}", - "name": "shoppings_customers_deposits_charges_putById", - "parameters": [ - { - "type": "string", - "description": "Target deposit charge's " - }, - { - "type": "object", - "properties": { - "value": { - "type": "number" - } - }, - "required": [ - "value" - ] - } - ], - "description": "Update a deposit charge application.\n\nUpdate value of a {@link IShoppingDepositCharge deposit charge application}\nthat has been applied by the {@link IShoppingCustomer }.\n\nIf the charge has been {@link IShoppingDepositChargePublish published},\nthen it is not possible to update the deposit charge. Only 410 gone exception\nwould be thrown." - }, - { - "method": "delete", - "path": "/shoppings/customers/deposits/charges/{id}", - "name": "shoppings_customers_deposits_charges_eraseById", - "parameters": [ - { - "type": "string", - "description": "Target deposit charge's " - } - ], - "description": "Erase a deposit charge application.\n\nErase a {@link IShoppingDepositCharge deposit charge application} that has been\napplied by the {@link IShoppingCustomer }.\n\nIf the charge has been {@link IShoppingDepositChargePublish published}, then\nit is not possible to erase the deposit charge. In that case, you've to cancel\nthe payment by calling the {@link publish.cancel } function." - }, - { - "method": "get", - "path": "/shoppings/customers/deposits/charges/{chargeId}/publish/able", - "name": "shoppings_customers_deposits_charges_publish_able_getByChargeid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target charge's " - } - ], - "output": { - "type": "boolean" - }, - "description": "Check publishable.\n\nTest whether the {@link IShoppingDepositCharge charge} is publishable or not.\n\nIf the charge has not been {@link IShoppingDepositChargePublish published} and\nnot deleted yet, then it is possible to publish the charge" - }, - { - "method": "post", - "path": "/shoppings/customers/deposits/charges/{chargeId}/publish", - "name": "shoppings_customers_deposits_charges_publish_postByChargeid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target charge's " - }, - { - "type": "object", - "properties": { - "vendor": { - "type": "string" - }, - "uid": { - "type": "string" - } - }, - "required": [ - "vendor", - "uid" - ] - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "paid_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancelled_at": { - "type": "string", - "format": "date-time", - "nullable": true - } - }, - "required": [ - "id", - "created_at", - "paid_at", - "cancelled_at" - ] - }, - "description": "Publish a charge.\n\n{@link IShoppingDepositChargePublish Publish} a\n{@link IShoppingDepositCharge charge} that has been applied by the\n{@link IShoppingCustomer } with payment information gotten from the\npayment vendor system.\n\nAlso, the payment time can be different with the publish time. For example,\nif the payment method is manual bank account transfer, then the payment\nwould be delayed until the customer actually transfer the money. In that\ncase, {@link IShoppingDepositChargePublish.paid_at } would be `null` value,\nso that you have to check it after calling this publish function." - }, - { - "method": "patch", - "path": "/shoppings/customers/deposits/histories", - "name": "shoppings_customers_deposits_histories_patch", - "parameters": [ - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "deposit": { - "type": "object", - "properties": { - "source": { - "type": "string" - }, - "code": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - -1, - 1 - ] - } - } - }, - "citizen_id": { - "type": "string", - "format": "uuid" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - }, - "minimum": { - "type": "number", - "minimum": 0 - }, - "maximum": { - "type": "number", - "minimum": 0 - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-deposit.source", - "-deposit.code", - "-deposit.direction", - "+deposit.source", - "+deposit.code", - "+deposit.direction", - "-history.value", - "-history.created_at", - "+history.value", - "+history.created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "deposit": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "created_at", - "code", - "source", - "direction" - ] - }, - "source_id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number" - }, - "balance": { - "type": "number" - }, - "created_at": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "id", - "citizen", - "deposit", - "source_id", - "value", - "balance", - "created_at" - ] - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every deposit histories.\n\nList up every {@link IShoppingDepositHistory deposit histories} of the\n{@link IShoppingCustomer customer} with {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingDepositHistory.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingDepositHistory.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/customers/deposits/histories/{id}", - "name": "shoppings_customers_deposits_histories_getById", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "" - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "deposit": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "created_at", - "code", - "source", - "direction" - ] - }, - "source_id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number" - }, - "balance": { - "type": "number" - }, - "created_at": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "id", - "citizen", - "deposit", - "source_id", - "value", - "balance", - "created_at" - ] - }, - "description": "Get a deposit history info.\n\nGet a {@link IShoppingDepositHistory deposit history} information." - }, - { - "method": "get", - "path": "/shoppings/customers/deposits/histories/balance", - "name": "shoppings_customers_deposits_histories_balance_get", - "parameters": [], - "output": { - "type": "number" - }, - "description": "Get balance of the deposit.\n\nGet current balance of the deposit of the {@link IShoppingCustomer customer}." - }, - { - "method": "patch", - "path": "/shoppings/customers/mileages/histories", - "name": "shoppings_customers_mileages_histories_patch", - "parameters": [ - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "mileage": { - "type": "object", - "properties": { - "source": { - "type": "string" - }, - "code": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - -1, - 1 - ] - } - } - }, - "citizen_id": { - "type": "string", - "format": "uuid" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - }, - "minimum": { - "type": "number", - "minimum": 0 - }, - "maximum": { - "type": "number", - "minimum": 0 - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-mileage.source", - "-mileage.code", - "-mileage.direction", - "+mileage.source", - "+mileage.code", - "+mileage.direction", - "-history.value", - "-history.created_at", - "+history.value", - "+history.created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - } - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "mileage": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "value", - "created_at", - "code", - "source", - "direction" - ] - }, - "source_id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number" - }, - "balance": { - "type": "number" - }, - "created_at": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "id", - "citizen", - "mileage", - "source_id", - "value", - "balance", - "created_at" - ] - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every mileage histories.\n\nList up every {@link IShoppingMileageHistory mileage histories} of the\n{@link IShoppingCustomer customer} with {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingMileageHistory.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingMileageHistory.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/customers/mileages/histories/{id}", - "name": "shoppings_customers_mileages_histories_getById", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target mileage history's " - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "mileage": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "code": { - "type": "string" - }, - "source": { - "type": "string" - }, - "direction": { - "type": "number", - "enum": [ - 1, - -1 - ] - } - }, - "required": [ - "id", - "value", - "created_at", - "code", - "source", - "direction" - ] - }, - "source_id": { - "type": "string", - "format": "uuid" - }, - "value": { - "type": "number" - }, - "balance": { - "type": "number" - }, - "created_at": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "id", - "citizen", - "mileage", - "source_id", - "value", - "balance", - "created_at" - ] - }, - "description": "Get a mileage history info.\n\nGet a {@link IShoppingMileageHistory mileage history} information." - }, - { - "method": "get", - "path": "/shoppings/customers/mileages/histories/balance", - "name": "shoppings_customers_mileages_histories_balance_get", - "parameters": [], - "output": { - "type": "number" - }, - "description": "Get balance of the mileage.\n\nGet current balance of the mileage of the {@link IShoppingCustomer customer}." - }, - { - "method": "put", - "path": "/shoppings/customers/carts/{cartId}/commodities/{id}", - "name": "shoppings_customers_carts_commodities_putByCartidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "nullable": true, - "description": "Belonged cart's ID" - }, - { - "type": "string", - "format": "uuid", - "description": "Target commodity's " - }, - { - "type": "object", - "properties": { - "volume": { - "type": "integer", - "minimum": 1, - "title": "Volume of the commodity to purchase", - "description": "Volume of the commodity to purchase.\n\nA value indicating how many sets would be multiplied to the children\n{@link IShoppingSaleUnitStock.IInvert.quantity } values." - } - }, - "required": [ - "volume" - ], - "description": "Update information of a shopping cart commodity." - } - ], - "description": "Update a commodity (volume).\n\nUpdate a {@link IShoppingCartCommodity commodity}'s volume in the\nshopping cart.\n\nIf the *cartId* is different with the belonged cart's ID, then 404 not\nfound exception would be thrown. Otherwise, the *cartId* has `null` value,\nsuch dependency checking would be skipped, but still ownership would be\nvalidated.\n\nAlso, if target {@link IShoppingSale sale} has been suspended or\n{@link IShoppingSaleUnitStockInventory out of stock} suddenly, then 410\ngone error would be thrown, either." - }, - { - "method": "delete", - "path": "/shoppings/customers/carts/{cartId}/commodities/{id}", - "name": "shoppings_customers_carts_commodities_eraseByCartidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "nullable": true, - "description": "Belonged cart's ID" - }, - { - "type": "string", - "format": "uuid", - "description": "Target commodity's " - } - ], - "description": "Erase a commodity.\n\nErase a {@link IShoppingCartCommodity commodity} from the shopping cart.\n\nIf the commodity is on an {@link IShoppingOrder order} process, it is not\npossible to erase it. Instead, if the order has been\n{@link IShoppingOrderPublish published}, then it would not be appread in\nthe shopping cart more. If the order be erased, then you also can continue\nerasinng the commodity, neither." - }, - { - "method": "get", - "path": "/shoppings/customers/carts/{cartId}/commodities/{id}/replica", - "name": "shoppings_customers_carts_commodities_replica_getByCartidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "nullable": true, - "description": "Belonged cart's ID" - }, - { - "type": "string", - "format": "uuid", - "description": "Target commodity's " - } - ], - "output": { - "type": "object", - "properties": { - "sale_id": { - "type": "string", - "format": "uuid", - "title": "Target sale's {@link IShoppingSale.id }", - "description": "Target sale's {@link IShoppingSale.id }." - }, - "stocks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "unit_id": { - "type": "string", - "format": "uuid", - "title": "Target unit's {@link IShoppingSaleUnit.id }", - "description": "Target unit's {@link IShoppingSaleUnit.id }." - }, - "stock_id": { - "type": "string", - "format": "uuid", - "title": "Target stock's {@link IShoppingSaleUnitStock.id }", - "description": "Target stock's {@link IShoppingSaleUnitStock.id }.\n\nIt must be matched with the {@link choices } property." - }, - "choices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "option_id": { - "type": "string", - "format": "uuid", - "title": "Target option's {@link IShoppingSaleUnitOption.id }", - "description": "Target option's {@link IShoppingSaleUnitOption.id }." - }, - "candidate_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Target candidate's {@link IShoppingSaleUnitOptionCandidate.id }", - "description": "Target candidate's {@link IShoppingSaleUnitOptionCandidate.id }.\n\nWhen target option's type is `select`, then this attribute is not\n`null` but has a value." - }, - "value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - } - ], - "title": "Written value about the option", - "description": "Written value about the option.\n\nWhen target option's type is not `select`, but an atomic type value\nlike `boolean`, `number` or `string`, then this attribute is not\n`null` but has the matched atomic value." - } - }, - "required": [ - "option_id", - "candidate_id", - "value" - ], - "description": "Creation information of the choice for each option.\n\nWhen record being created, its corresponding structure would be\n{@link IShoppingSaleUnitStockChoice.IInvert }." - }, - "title": "Creation information of the choices for each option", - "description": "Creation information of the choices for each option." - }, - "quantity": { - "type": "integer", - "minimum": 1, - "title": "Quantity of the stock to purchase", - "description": "Quantity of the stock to purchase.\n\nThis value is multiplied by the {@link IShoppingCartCommodity.volume }." - } - }, - "required": [ - "unit_id", - "stock_id", - "choices", - "quantity" - ], - "description": "Creation information of the commodity stock of shopping cart.\n\nWhen record being created, its corresponding structure would be\n{@link IShoppingSaleSnapshotUnit.IInvert } and\n{@link IShoppingSaleSnapshotUnitStock.IInvert }." - }, - "minItems": 1, - "title": "List of the stocks to be purchased", - "description": "List of the stocks to be purchased." - }, - "volume": { - "type": "integer", - "minimum": 1, - "title": "Volume of the commodity to purchase", - "description": "Volume of the commodity to purchase.\n\nA value indicating how many sets would be multiplied to the children\n{@link IShoppingSaleUnitStock.IInvert.quantity } values." - }, - "accumulate": { - "type": "boolean", - "title": "Whether to accumulate the volume or not", - "description": "Whether to accumulate the volume or not.\n\nIf this attribute is not `false` and there's same commodity that\ncomposed with same stocks and options, then the volume will be\naccumulated to the existed one.\n\nOtherwise, duplicated commodity would be newly created." - } - }, - "required": [ - "sale_id", - "stocks", - "volume" - ], - "description": "Creation information of a shopping cart commodity." - }, - "description": "Get replica of a commodity.\n\nGet a {@link IShoppingCartCommodity.ICreate } typed info of the target\ncommodity for replication.\n\nBy the way, if the *cartId* is different with the belonged cart's ID,\nthen 404 not found exception would be thrown. Otherwise, the *cartId*\nhas `null` value, such dependency checking would be skipped, but still\nownership would be validated.\n\nAlso, if target {@link IShoppingSale sale} has been suspended or\n{@link IShoppingSaleUnitStockInventory out of stock} suddenly,\nthen 410 gone error would be thrown, either." - }, - { - "method": "delete", - "path": "/shoppings/customers/orders/{id}", - "name": "shoppings_customers_orders_eraseById", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target order's " - } - ], - "description": "Erase an order application.\n\nErase an order application that has been applied by the\n{@link IShoppingCustomer }.\n\nIf the order has been {@link IShoppingOrderPublish published}, then it is\nnot possible to erase the order. In that case, you've to cancel the\npayment by calling the {@link publish.cancel } function." - }, - { - "method": "put", - "path": "/shoppings/customers/orders/{orderId}/goods/{id}/confirm", - "name": "shoppings_customers_orders_goods_confirm_putByOrderidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged order's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target good's " - } - ], - "description": "Confirm an order good.\n\nConfirm an {@link IShoppingOrderGood order good} that has been\ncompleted {@link IShoppingDelivery delivering} to the\n{@link IShoppingCustomer customer}.\n\nIn other words, belonged {@link IShoppingOrder order} must be\n{@link IShoppingPublish.paid_at published, paid} and delivery of\nthe good must be {@link IShoppingDeliveryJourney arrived} to the\ncustomer. If not, 428 unprocessable entity error would be thrown." - }, - { - "method": "get", - "path": "/shoppings/customers/orders/{orderId}/publish/able", - "name": "shoppings_customers_orders_publish_able_getByOrderid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target order's " - } - ], - "output": { - "type": "boolean" - }, - "description": "Check publishable.\n\nTest whether the {@link IShoppingOrder order} is publishable or not.\n\nIf the order has not been {@link IShoppingOrderPublish published} and\nnot deleted yet, then it is possible to publish the order. Even thouogh\ntarget {@link IShoppingSale sale} is suspended or\n{@link IShoppingSaleUnitStockInventory out of stock}, it is still possible\nto publish because the order already has been applied." - }, - { - "method": "post", - "path": "/shoppings/customers/orders/{orderId}/publish", - "name": "shoppings_customers_orders_publish_postByOrderid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target order's " - }, - { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "cash" - ] - }, - "address": { - "type": "object", - "properties": { - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number to contact", - "description": "Mobile number to contact." - }, - "name": { - "type": "string", - "title": "Representative name of the address", - "description": "Representative name of the address.\n\nSometimes be receiver's name, and sometimes be place name." - }, - "country": { - "type": "string", - "title": "Country name", - "description": "Country name." - }, - "province": { - "type": "string", - "title": "Province name", - "description": "Province name." - }, - "city": { - "type": "string", - "title": "City name", - "description": "City name." - }, - "department": { - "type": "string", - "title": "Department name", - "description": "Department name." - }, - "possession": { - "type": "string", - "title": "Detailed address containing street name, building number, and room number", - "description": "Detailed address containing street name, building number, and room number." - }, - "zip_code": { - "type": "string", - "title": "Zip code, or postal code", - "description": "Zip code, or postal code." - }, - "special_note": { - "type": "string", - "nullable": true, - "title": "Special description if required", - "description": "Special description if required." - } - }, - "required": [ - "mobile", - "name", - "country", - "province", - "city", - "department", - "possession", - "zip_code", - "special_note" - ] - }, - "vendor": { - "type": "string" - }, - "uid": { - "type": "string" - } - }, - "required": [ - "type", - "address", - "vendor", - "uid" - ] - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "zero" - ] - }, - "address": { - "type": "object", - "properties": { - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number to contact", - "description": "Mobile number to contact." - }, - "name": { - "type": "string", - "title": "Representative name of the address", - "description": "Representative name of the address.\n\nSometimes be receiver's name, and sometimes be place name." - }, - "country": { - "type": "string", - "title": "Country name", - "description": "Country name." - }, - "province": { - "type": "string", - "title": "Province name", - "description": "Province name." - }, - "city": { - "type": "string", - "title": "City name", - "description": "City name." - }, - "department": { - "type": "string", - "title": "Department name", - "description": "Department name." - }, - "possession": { - "type": "string", - "title": "Detailed address containing street name, building number, and room number", - "description": "Detailed address containing street name, building number, and room number." - }, - "zip_code": { - "type": "string", - "title": "Zip code, or postal code", - "description": "Zip code, or postal code." - }, - "special_note": { - "type": "string", - "nullable": true, - "title": "Special description if required", - "description": "Special description if required." - } - }, - "required": [ - "mobile", - "name", - "country", - "province", - "city", - "department", - "possession", - "zip_code", - "special_note" - ] - } - }, - "required": [ - "type", - "address" - ] - } - ] - } - ], - "output": { - "type": "object", - "properties": { - "deliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "journeys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the record", - "description": "Creation time of the record." - }, - "deleted_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Deletion time of the record", - "description": "Deletion time of the record." - }, - "type": { - "type": "string", - "enum": [ - "preparing", - "manufacturing", - "shipping", - "delivering" - ] - }, - "title": { - "type": "string", - "nullable": true, - "title": "Title of journey", - "description": "Title of journey." - }, - "description": { - "type": "string", - "nullable": true, - "title": "Description of journey", - "description": "Description of journey." - }, - "started_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Start time of the journey", - "description": "Start time of the journey." - }, - "completed_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Completion time of the journey", - "description": "Completion time of the journey." - } - }, - "required": [ - "id", - "created_at", - "deleted_at", - "type", - "title", - "description", - "started_at", - "completed_at" - ], - "description": "Journey of delivery.\n\n`IShoppingDeliveryJourney` is a subsidiary entity of {@link IShoppingDelivery },\ndescribing each journey of the delivery. For reference, the word journey\nmeans each step of the delivery process, such as preparing, shipping, and\ndelivering {@link IShoppingOrderGood goods} to the\n{@link IShoppingCustomer customer}." - }, - "title": "List of journeys of the delivery", - "description": "List of journeys of the delivery." - }, - "pieces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "publish_id": { - "type": "string", - "format": "uuid", - "title": "Target order's {@link IShoppingOrderPublish.id }", - "description": "Target order's {@link IShoppingOrderPublish.id }." - }, - "good_id": { - "type": "string", - "format": "uuid", - "title": "Target good's {@link IShoppingOrderGood.id }", - "description": "Target good's {@link IShoppingOrderGood.id }." - }, - "stock_id": { - "type": "string", - "format": "uuid", - "title": "Target stock's {@link IShoppingSaleUnitStock.id }", - "description": "Target stock's {@link IShoppingSaleUnitStock.id }." - }, - "quantity": { - "type": "number", - "minimum": 0, - "title": "Quantity of the stock", - "description": "Quantity of the stock.\n\nIt can be precision value to express splitted shipping." - } - }, - "required": [ - "id", - "publish_id", - "good_id", - "stock_id", - "quantity" - ], - "description": "Which stocks are delivered.\n\n`IShoppingDeliveryPiece` is a subsidiary entity of {@link IShoppingDelivery },\ndescribing how much quantity is delivered for each\n{@link IShoppingSaleUnitStock stock} in {@link IShoppingOrder }.\n\nFor reference, as an order can be delivered in multiple times due to volume\nor weight problem, it is possible to have multiple `IShoppingDeliveryPiece`\nrecords for a single stock." - }, - "minItems": 1, - "title": "List of pieces of the delivery", - "description": "List of pieces of the delivery." - }, - "shippers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "company": { - "type": "string", - "nullable": true - }, - "name": { - "type": "string" - }, - "mobile": { - "type": "string" - } - }, - "required": [ - "id", - "created_at", - "company", - "name", - "mobile" - ] - }, - "title": "List of shippers of the delivery", - "description": "List of shippers of the delivery." - }, - "state": { - "type": "string", - "enum": [ - "none", - "underway", - "preparing", - "manufacturing", - "shipping", - "delivering", - "arrived" - ], - "description": "State of delivery\n\n- `none`: No delivery or journey record\n- `underway`: Some pieces are over preparing, but others are not\n- `preparing`: At least preparing\n- `manufacturing`: At least manufacturing\n- `shipping`: At least shipping\n- `delivering`: At least delivering\n- `arrived`: Every pieces are arrived" - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the record", - "description": "Creation time of the record." - } - }, - "required": [ - "id", - "seller", - "journeys", - "pieces", - "shippers", - "state", - "created_at" - ], - "description": "Delivery information.\n\nWhen delivering {@link IShoppingOrderGood goods} to\n{@link IShoppingCustomer customer}, {@link IShoppingSeller seller} can deliver\nmultiple {@link IShoppingSaleUnitStock stocks}, goods at once. Also, it is\npossible to deliver a stock or good in multiple times due to physical restriction\nlike volume or weight problem.\n\nAs you can see from above, the relationship between delivery with\n{@link IShoppingOrder order} (or {@link IShoppingOrderGood good}) is not 1: 1 or\nN: 1, but M: N. Entity `IShoppingDelivery` has been designed to represent such\nrelationship, by referencing target stocks or goods through subsidiary entity\n{@link IShoppingDeliveryPiece }.\n\nAlso, delivery does not end with only one step. It has multiple processes like\nmanufacturing, planning, shipping and delivering. Those steps are represented by\nanother subsidiary entity {@link IShoppingDeliveryJourney }." - }, - "title": "List of deliveries", - "description": "List of deliveries.\n\nAn {@link IShoppingOrder order} can be delivered in multiple times.\nOf course, the opposite case is also possible, that a\n{@link IShoppingDelivery delivery} can be composed of multiple orders." - }, - "state": { - "type": "string", - "enum": [ - "none", - "underway", - "preparing", - "manufacturing", - "shipping", - "delivering", - "arrived" - ], - "description": "State of delivery\n\n- `none`: No delivery or journey record\n- `underway`: Some pieces are over preparing, but others are not\n- `preparing`: At least preparing\n- `manufacturing`: At least manufacturing\n- `shipping`: At least shipping\n- `delivering`: At least delivering\n- `arrived`: Every pieces are arrived" - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the record", - "description": "Creation time of the record." - }, - "paid_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Time when the order was paid", - "description": "Time when the order was paid." - }, - "cancelled_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Time when the payment was cancelled", - "description": "Time when the payment was cancelled." - }, - "address": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number to contact", - "description": "Mobile number to contact." - }, - "name": { - "type": "string", - "title": "Representative name of the address", - "description": "Representative name of the address.\n\nSometimes be receiver's name, and sometimes be place name." - }, - "country": { - "type": "string", - "title": "Country name", - "description": "Country name." - }, - "province": { - "type": "string", - "title": "Province name", - "description": "Province name." - }, - "city": { - "type": "string", - "title": "City name", - "description": "City name." - }, - "department": { - "type": "string", - "title": "Department name", - "description": "Department name." - }, - "possession": { - "type": "string", - "title": "Detailed address containing street name, building number, and room number", - "description": "Detailed address containing street name, building number, and room number." - }, - "zip_code": { - "type": "string", - "title": "Zip code, or postal code", - "description": "Zip code, or postal code." - }, - "special_note": { - "type": "string", - "nullable": true, - "title": "Special description if required", - "description": "Special description if required." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name", - "country", - "province", - "city", - "department", - "possession", - "zip_code", - "special_note" - ], - "description": "The address information." - } - }, - "required": [ - "deliveries", - "state", - "id", - "created_at", - "paid_at", - "cancelled_at", - "address" - ], - "description": "Order completion and payment information.\n\n`IShoppingOrderPublish` is an entity that embodies the series of processes\nin which a {@link IShoppingCustomer customer} pays for his or her\n{@link IShoppingOrder order}, thereby completing the order. And only after\nthe order is {@link paid_at completed}, can the {@link IShoppingSeller seller}\nrecognize that the customer has purchased his product.\n\nBy the way, please note that just because the `IShoppingOrderPublish` record\nexists, it does not mean that the payment has been completed. Of course, with\n\"credit cards\" and \"Google Pay\", payment application and payment occur at the\nsame time. However, there are some cases where payment is made after the\npayment application, such as \"bank transfer\" or \"virtual account payment\".\nTherefore, to see the completion of payment, be sure to check the\n{@link paid_at } property.\n\nIn addition, even after payment has been made, there may be cases where it is\nsuddenly cancelled, so please be aware of this as well." - }, - "description": "Publish an order.\n\n{@link IShoppingOrderPublish Publish} an {@link IShoppingOrder order} that\nhas been applied by the {@link IShoppingCustomer } with\n{@link IShoppingAddress address} to delivery and payment information gotten\nfrom the payment vendor system.\n\nIf the order has been discounted for entire order price, then no need\nto send payment vendor info. Instead, only address info is required.\n\nAlso, the payment time can be different with the publish time. For example,\nif the payment method is manual bank account transfer, then the payment\nwould be delayed until the customer actually transfer the money. In that\ncase, {@link IShoppingOrderPublish.paid_at } would be `null` value, so\nthat you have to check it after calling this publish function." - }, - { - "method": "delete", - "path": "/shoppings/customers/orders/{orderId}/publish", - "name": "shoppings_customers_orders_publish_eraseByOrderid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target order's " - } - ], - "description": "Cancel the publish (payment).\n\nCancel payment of an {@link IShoppingOrder order} that has been\n{@link IShoppingOrderPublish published}.\n\nIf target publish's payment method is manual bank account transfer,\nthen it would be cancelled directly. If not, then payment cancel\nrequest would be sent to the payment vendor system." - }, - { - "method": "post", - "path": "/shoppings/customers/sales/{saleId}/questions/{inquiryId}/comments", - "name": "shoppings_customers_sales_questions_comments_postBySaleidAndInquiryid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target inquiry's " - }, - { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales." - }, - { - "method": "patch", - "path": "/shoppings/customers/sales/{saleId}/questions/{inquiryId}/comments", - "name": "shoppings_customers_sales_questions_comments_patchBySaleidAndInquiryid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "body": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the comments with pagination and searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales." - }, - { - "method": "get", - "path": "/shoppings/customers/sales/{saleId}/questions/{inquiryId}/comments/{id}", - "name": "shoppings_customers_sales_questions_comments_getBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales." - }, - { - "method": "put", - "path": "/shoppings/customers/sales/{saleId}/questions/{inquiryId}/comments/{id}", - "name": "shoppings_customers_sales_questions_comments_putBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - }, - { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot content of the comment." - }, - "description": "Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." - }, - { - "method": "post", - "path": "/shoppings/customers/sales/{saleId}/questions", - "name": "shoppings_customers_sales_questions_postBySaleid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "secret", - "format", - "title", - "body", - "files" - ], - "description": "Creation information of the question." - } - ], - "output": { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "type": { - "type": "string", - "enum": [ - "question" - ], - "title": "Type of the derived inquiry", - "description": "Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion }\n- `review`: {@link IShoppingSaleReview }" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "seller", - "id", - "snapshots", - "created_at" - ], - "description": "Formal answer for the inquiry by the seller.", - "title": "Formal answer for the inquiry by the seller", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "secret", - "type", - "customer", - "answer", - "read_by_seller", - "id", - "snapshots", - "created_at" - ], - "description": "Question about sale snapshot.\n\n`IShoppingSaleQuestion` is a subtype entity of {@link IShoppingSaleInquiry },\nand is used when a {@link IShoppingCustomer customer} wants to ask something\nabout a {@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at\nthe time) registered by the {@link IShoppingSeller seller}.\n\nAnd, like most shopping malls, `IShoppingSaleQuestion` also provides\na {@link secret } attribute, allowing you to create a \"secret message\" that can\nonly be viewed by the seller and the customer who wrote the question." - }, - "description": "Write a question article.\n\nWhen a {@link IShoppingCustomer customer} wants to ask something about\na specific {@link IShoppingSale sale}, he/she can ask it by writing a\nnew {@link IShoppingSaleQuestion question article}.\n\nIf the customer does not want to reveal his/her identify and question,\nhe/she can write the question as a secret article. In that case, only\nthe customer and the related {@link IShoppingSeller seller} can see\nthe {@link at detailed content}. Also, such secret question's title and\nwriter name would be masked with `*` characters in the\n{@link index pagiation API}." - }, - { - "method": "patch", - "path": "/shoppings/customers/sales/{saleId}/questions", - "name": "shoppings_customers_sales_questions_patchBySaleid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "secret", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at" - ], - "description": "Summarized information of the question." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every summarized questions.\n\nList up every {@link IShoppingSaleQuestion.ISummary summarized questions} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned questions are summarized, not detailed. If you want\nto get the detailed information of a question, use {@link adridges } function\nor {@link at } function for each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.ISummary.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.ISummary.secret } with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/customers/sales/{saleId}/questions/{id}", - "name": "shoppings_customers_sales_questions_getBySaleidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target question's " - } - ], - "output": { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "type": { - "type": "string", - "enum": [ - "question" - ], - "title": "Type of the derived inquiry", - "description": "Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion }\n- `review`: {@link IShoppingSaleReview }" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "seller", - "id", - "snapshots", - "created_at" - ], - "description": "Formal answer for the inquiry by the seller.", - "title": "Formal answer for the inquiry by the seller", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "secret", - "type", - "customer", - "answer", - "read_by_seller", - "id", - "snapshots", - "created_at" - ], - "description": "Question about sale snapshot.\n\n`IShoppingSaleQuestion` is a subtype entity of {@link IShoppingSaleInquiry },\nand is used when a {@link IShoppingCustomer customer} wants to ask something\nabout a {@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at\nthe time) registered by the {@link IShoppingSeller seller}.\n\nAnd, like most shopping malls, `IShoppingSaleQuestion` also provides\na {@link secret } attribute, allowing you to create a \"secret message\" that can\nonly be viewed by the seller and the customer who wrote the question." - }, - "description": "Get a question info.\n\nGet a detailed {@link IShoppingSaleQuestion question} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s question. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nquestions of the sales except the {@link IShoppingSaleQuestion.secret }\nvalue is `false`." - }, - { - "method": "post", - "path": "/shoppings/customers/sales/{saleId}/questions/{id}", - "name": "shoppings_customers_sales_questions_postBySaleidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target question's " - }, - { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "title", - "body", - "files" - ], - "description": "Creation information of the article." - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "description": "Update a question.\n\nUpdate a {@link IShoppingSaleQuestion question}'s content.\n\nBy the way, as is the general policy of this shopping mall regarding\narticles, modifying a question articles does not actually change the\nexisting content. Modified content is accumulated and recorded in the\nexisting article record as a new\n{@link IShoppingSaleQuestion.ISnapshot snapshot}. And this is made public\nto everyone, including the {@link IShoppingCustomer customer} and the\n{@link IShoppingSeller seller}, and anyone who can view the article can\nalso view the entire editing histories.\n\nThis is to prevent customers or sellers from modifying their articles and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." - }, - { - "method": "patch", - "path": "/shoppings/customers/sales/{saleId}/questions/abridges", - "name": "shoppings_customers_sales_questions_abridges_patchBySaleid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "secret", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "description": "Abridged information of the question." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every abridged questions.\n\nList up every {@link IShoppingSaleQuestion.IAbridge abridged questions} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned questions are abridged, not detailed. If you want\nto get the detailed information of a question, use {@link at } function\nfor each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.IAridge.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.IAridge.secret } with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." - }, - { - "method": "post", - "path": "/shoppings/customers/sales/{saleId}/reviews/{inquiryId}/comments", - "name": "shoppings_customers_sales_reviews_comments_postBySaleidAndInquiryid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target inquiry's " - }, - { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales." - }, - { - "method": "patch", - "path": "/shoppings/customers/sales/{saleId}/reviews/{inquiryId}/comments", - "name": "shoppings_customers_sales_reviews_comments_patchBySaleidAndInquiryid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "body": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the comments with pagination and searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales." - }, - { - "method": "get", - "path": "/shoppings/customers/sales/{saleId}/reviews/{inquiryId}/comments/{id}", - "name": "shoppings_customers_sales_reviews_comments_getBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales." - }, - { - "method": "put", - "path": "/shoppings/customers/sales/{saleId}/reviews/{inquiryId}/comments/{id}", - "name": "shoppings_customers_sales_reviews_comments_putBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - }, - { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot content of the comment." - }, - "description": "Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." - }, - { - "method": "post", - "path": "/shoppings/customers/sales/{saleId}/reviews", - "name": "shoppings_customers_sales_reviews_postBySaleid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "object", - "properties": { - "good_id": { - "type": "string", - "format": "uuid", - "title": "Target good's {@link IShoppingOrderGood.id }", - "description": "Target good's {@link IShoppingOrderGood.id }." - }, - "score": { - "type": "number", - "minimum": 0, - "maximum": 100, - "title": "Score of the review", - "description": "Score of the review." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "good_id", - "score", - "format", - "title", - "body", - "files" - ], - "description": "Creation information of the review." - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "review" - ], - "title": "Type of the derived inquiry", - "description": "Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion }\n- `review`: {@link IShoppingSaleReview }" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "seller", - "id", - "snapshots", - "created_at" - ], - "description": "Formal answer for the inquiry by the seller.", - "title": "Formal answer for the inquiry by the seller", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "score": { - "type": "number", - "minimum": 0, - "maximum": 100, - "title": "Score of the review", - "description": "Score of the review." - }, - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "score", - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot content of the review article." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "type", - "customer", - "answer", - "read_by_seller", - "id", - "snapshots", - "created_at" - ], - "description": "Reviews for sale snapshots.\n\n`IShoppingSaleReview` is a subtype entity of {@link IShoppingSaleInquiry },\nand is used when a {@link IShoppingCustomer customer} purchases a\n{@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at the time)\nregistered by the {@link IShoppingSeller seller} as a product and leaves a\nreview and rating for it.\n\nFor reference, `IShoppingSaleReview` and\n{@link IShoppingOrderGod shopping_order_goods} have a logarithmic relationship\nof N: 1, but this does not mean that customers can continue to write reviews\nfor the same product indefinitely. Wouldn't there be restrictions, such as\nif you write a review once, you can write an additional review a month later?" - }, - "description": "Write a review article.\n\nWhen a {@link IShoppingCustomer customer} has purchased a specific\n{@link IShoppingSale sale} and get {@link IShoppingDelivery delivered} it,\nhe/she can write a {@link IShoppingSaleReview review} article about the sale.\n\nIf try to write a review article without purchasing or the delivery has not\nbeen completed, 428 unprocessable entity error would be thrown. Also, the\ncustomer can write multiple review articles per an order, but the next\narticle can be written after 2 weeks from the previous article. If not,\n428 unprocessable entity error would be thrown, either." - }, - { - "method": "patch", - "path": "/shoppings/customers/sales/{saleId}/reviews", - "name": "shoppings_customers_sales_reviews_patchBySaleid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - }, - "minimum": { - "type": "number", - "minimum": 0, - "maximum": 100 - }, - "maximum": { - "type": "number", - "minimum": 0, - "maximum": 100 - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at", - "-score", - "+score" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "score": { - "type": "number", - "title": "Score of the review", - "description": "Score of the review." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "score", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at" - ], - "description": "Summarized information of the review." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every summarized reviews.\n\nList up every {@link IShoppingSaleReview.ISummary summarized reviews} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned reviews are summarized, not detailed. If you want\nto get the detailed information of a review, use {@link adridges } function\nor {@link at } function for each article.\n\nAlso, returned review has {@link IShoppingSaleReview.ISummary.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/customers/sales/{saleId}/reviews/{id}", - "name": "shoppings_customers_sales_reviews_getBySaleidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target review's " - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "review" - ], - "title": "Type of the derived inquiry", - "description": "Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion }\n- `review`: {@link IShoppingSaleReview }" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "seller", - "id", - "snapshots", - "created_at" - ], - "description": "Formal answer for the inquiry by the seller.", - "title": "Formal answer for the inquiry by the seller", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "score": { - "type": "number", - "minimum": 0, - "maximum": 100, - "title": "Score of the review", - "description": "Score of the review." - }, - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "score", - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot content of the review article." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "type", - "customer", - "answer", - "read_by_seller", - "id", - "snapshots", - "created_at" - ], - "description": "Reviews for sale snapshots.\n\n`IShoppingSaleReview` is a subtype entity of {@link IShoppingSaleInquiry },\nand is used when a {@link IShoppingCustomer customer} purchases a\n{@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at the time)\nregistered by the {@link IShoppingSeller seller} as a product and leaves a\nreview and rating for it.\n\nFor reference, `IShoppingSaleReview` and\n{@link IShoppingOrderGod shopping_order_goods} have a logarithmic relationship\nof N: 1, but this does not mean that customers can continue to write reviews\nfor the same product indefinitely. Wouldn't there be restrictions, such as\nif you write a review once, you can write an additional review a month later?" - }, - "description": "Get a review info.\n\nGet a detailed {@link IShoppingSaleReview review} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s review. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nreviews of the sales." - }, - { - "method": "post", - "path": "/shoppings/customers/sales/{saleId}/reviews/{id}", - "name": "shoppings_customers_sales_reviews_postBySaleidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target review's " - }, - { - "type": "object", - "properties": { - "score": { - "type": "number", - "minimum": 0, - "maximum": 100, - "title": "Score of the review", - "description": "Score of the review." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "score", - "format", - "title", - "body", - "files" - ], - "description": "Updating information of the review." - } - ], - "output": { - "type": "object", - "properties": { - "score": { - "type": "number", - "minimum": 0, - "maximum": 100, - "title": "Score of the review", - "description": "Score of the review." - }, - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "score", - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot content of the review article." - }, - "description": "Update a review.\n\nUpdadte a {@link IShoppingSaleReview review}'s content and score.\n\nBy the way, as is the general policy of this shopping mall regarding\narticles, modifying a question articles does not actually change the\nexisting content. Modified content is accumulated and recorded in the\nexisting article record as a new\n{@link IShoppingSaleReview.ISnapshot snapshot}. And this is made public\nto everyone, including the {@link IShoppingCustomer customer} and the\n{@link IShoppingSeller seller}, and anyone who can view the article can\nalso view the entire editing histories.\n\nThis is to prevent customers or sellers from modifying their articles and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." - }, - { - "method": "patch", - "path": "/shoppings/customers/sales/{saleId}/reviews/abridges", - "name": "shoppings_customers_sales_reviews_abridges_patchBySaleid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - }, - "minimum": { - "type": "number", - "minimum": 0, - "maximum": 100 - }, - "maximum": { - "type": "number", - "minimum": 0, - "maximum": 100 - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at", - "-score", - "+score" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "score": { - "type": "number", - "minimum": 0, - "maximum": 100, - "title": "Score of the review", - "description": "Score of the review." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "score", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "description": "Abridged information of the review." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every abridged reviews.\n\nList up every {@link IShoppingSaleReview.IAbridge abridged reviews} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned reviews are abridged, not detailed. If you want\nto get the detailed information of a review, use {@link at } function\nfor each article.\n\nAlso, returned review has {@link IShoppingSaleReview.IAridge.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." - }, - { - "method": "patch", - "path": "/shoppings/customers/systematic/channels", - "name": "shoppings_customers_systematic_channels_patch", - "parameters": [ - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-channel.code", - "-channel.name", - "-channel.created_at", - "+channel.code", - "+channel.name", - "+channel.created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the channels with pagination and searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every channels.\n\nList up every {@link IShoppingChannel channels} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingChannel.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingChannel.IRequest.sort sort condition}." - }, - { - "method": "patch", - "path": "/shoppings/customers/systematic/sections", - "name": "shoppings_customers_systematic_sections_patch", - "parameters": [ - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-section.code", - "-section.name", - "-section.created_at", - "+section.code", - "+section.name", - "+section.created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the sections with pagination and searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "code", - "name", - "created_at" - ], - "description": "Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every sections.\n\nList up every {@link IShoppingSection sections} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSection.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingSection.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/customers/systematic/sections/{id}", - "name": "shoppings_customers_systematic_sections_getById", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target section's " - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "code", - "name", - "created_at" - ], - "description": "Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future." - }, - "description": "Get a section info.\n\nGet a detailed {@link IShoppingSection section} information." - }, - { - "method": "get", - "path": "/shoppings/customers/systematic/sections/{code}/get", - "name": "shoppings_customers_systematic_sections_get_getByCode", - "parameters": [ - { - "type": "string", - "description": "Target section's " - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "code", - "name", - "created_at" - ], - "description": "Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future." - }, - "description": "Get a section info by its code.\n\nGet a detailed {@link IShoppingSection section} information by its code." - }, - { - "method": "get", - "path": "/shoppings/sellers/authenticate", - "name": "shoppings_sellers_authenticate_get", - "parameters": [], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - "description": "Get seller information.\n\nGet {@link IShoppingSeller.IInvert seller} information of\ncurrent {@link IShoppingCustomer customer}.\n\nIf current {@link IShoppingMember member} is not an seller,\nit throws 403 forbidden exception." - }, - { - "method": "post", - "path": "/shoppings/sellers/authenticate", - "name": "shoppings_sellers_authenticate_post", - "parameters": [ - { - "type": "object", - "properties": {} - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - "description": "Join as an seller.\n\nJoin as an seller with {@link IShoppingSeller.IJoin joining info}.\n\nThis method is allowed only when the {@link IShoppingCustomer customer} already\nhas joined the {@link IShoppingMember membership}. IF not, he (she) must\naccomplish it before. If not, 403 forbidden exception would be thrown." - }, - { - "method": "put", - "path": "/shoppings/sellers/authenticate/login", - "name": "shoppings_sellers_authenticate_login_put", - "parameters": [ - { - "type": "object", - "properties": { - "email": { - "type": "string", - "format": "email", - "title": "Email address of member", - "description": "Email address of member.\n\nIf the member has multiple email addresses, just use one of them." - }, - "password": { - "type": "string", - "title": "Password of the member account", - "description": "Password of the member account." - } - }, - "required": [ - "email", - "password" - ], - "description": "Login request info." - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - "description": "Login as an seller.\n\nLogin as an seller with {@link IShoppingSeller.ILogin login info}.\n\nThis method has exactly same effect with\n{@link ShoppingApi.functional.customers.authenticate.login } function, but\nreturned type is a llttle different. The similar function returns\n{@link IShoppingCustomer } type that starting from the customer information, so\nthat you have to access to the seller info through\n`customer.member.seller`. In contrast with that, this method returns\n{@link IShoppingSeller.IInvert } type that starting from the seller\ninfo, so that can access to the customer info through `seller.customer`.\n\nOf course, to use this function, you had to {@link join } as an seller\nbefore. If not, 403 forbidden exception would be thrown," - }, - { - "method": "post", - "path": "/shoppings/sellers/deliveries", - "name": "shoppings_sellers_deliveries_post", - "parameters": [ - { - "type": "object", - "properties": { - "pieces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "publish_id": { - "type": "string", - "format": "uuid", - "title": "Target order's {@link IShoppingOrderPublish.id }", - "description": "Target order's {@link IShoppingOrderPublish.id }." - }, - "good_id": { - "type": "string", - "format": "uuid", - "title": "Target good's {@link IShoppingOrderGood.id }", - "description": "Target good's {@link IShoppingOrderGood.id }." - }, - "stock_id": { - "type": "string", - "format": "uuid", - "title": "Target stock's {@link IShoppingSaleUnitStock.id }", - "description": "Target stock's {@link IShoppingSaleUnitStock.id }." - }, - "quantity": { - "type": "number", - "minimum": 0, - "title": "Quantity of the stock", - "description": "Quantity of the stock.\n\nIt can be precision value to express splitted shipping." - } - }, - "required": [ - "publish_id", - "good_id", - "stock_id", - "quantity" - ], - "description": "Creation information of the delivery piece." - }, - "minItems": 1, - "title": "List of pieces of the delivery", - "description": "List of pieces of the delivery." - }, - "journeys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "preparing", - "manufacturing", - "shipping", - "delivering" - ], - "title": "Type of journey", - "description": "Type of journey.\n\n- preparing\n- manufacturing\n- shipping\n- delivering" - }, - "title": { - "type": "string", - "nullable": true, - "title": "Title of journey", - "description": "Title of journey." - }, - "description": { - "type": "string", - "nullable": true, - "title": "Description of journey", - "description": "Description of journey." - }, - "started_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Start time of the journey", - "description": "Start time of the journey." - }, - "completed_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Completion time of the journey", - "description": "Completion time of the journey." - } - }, - "required": [ - "type", - "title", - "description", - "started_at", - "completed_at" - ], - "description": "Creation information of the delivery journey." - }, - "title": "List of journeys of the delivery", - "description": "List of journeys of the delivery.\n\nThis is initial data, and it is also possible to accumulate journey data\nafter the delivery creation." - }, - "shippers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "company": { - "type": "string", - "nullable": true - }, - "name": { - "type": "string" - }, - "mobile": { - "type": "string" - } - }, - "required": [ - "company", - "name", - "mobile" - ] - }, - "title": "List of shippers of the delivery", - "description": "List of shippers of the delivery." - } - }, - "required": [ - "pieces", - "journeys", - "shippers" - ], - "description": "Creation information of the delivery." - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "journeys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the record", - "description": "Creation time of the record." - }, - "deleted_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Deletion time of the record", - "description": "Deletion time of the record." - }, - "type": { - "type": "string", - "enum": [ - "preparing", - "manufacturing", - "shipping", - "delivering" - ] - }, - "title": { - "type": "string", - "nullable": true, - "title": "Title of journey", - "description": "Title of journey." - }, - "description": { - "type": "string", - "nullable": true, - "title": "Description of journey", - "description": "Description of journey." - }, - "started_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Start time of the journey", - "description": "Start time of the journey." - }, - "completed_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Completion time of the journey", - "description": "Completion time of the journey." - } - }, - "required": [ - "id", - "created_at", - "deleted_at", - "type", - "title", - "description", - "started_at", - "completed_at" - ], - "description": "Journey of delivery.\n\n`IShoppingDeliveryJourney` is a subsidiary entity of {@link IShoppingDelivery },\ndescribing each journey of the delivery. For reference, the word journey\nmeans each step of the delivery process, such as preparing, shipping, and\ndelivering {@link IShoppingOrderGood goods} to the\n{@link IShoppingCustomer customer}." - }, - "title": "List of journeys of the delivery", - "description": "List of journeys of the delivery." - }, - "pieces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "publish_id": { - "type": "string", - "format": "uuid", - "title": "Target order's {@link IShoppingOrderPublish.id }", - "description": "Target order's {@link IShoppingOrderPublish.id }." - }, - "good_id": { - "type": "string", - "format": "uuid", - "title": "Target good's {@link IShoppingOrderGood.id }", - "description": "Target good's {@link IShoppingOrderGood.id }." - }, - "stock_id": { - "type": "string", - "format": "uuid", - "title": "Target stock's {@link IShoppingSaleUnitStock.id }", - "description": "Target stock's {@link IShoppingSaleUnitStock.id }." - }, - "quantity": { - "type": "number", - "minimum": 0, - "title": "Quantity of the stock", - "description": "Quantity of the stock.\n\nIt can be precision value to express splitted shipping." - } - }, - "required": [ - "id", - "publish_id", - "good_id", - "stock_id", - "quantity" - ], - "description": "Which stocks are delivered.\n\n`IShoppingDeliveryPiece` is a subsidiary entity of {@link IShoppingDelivery },\ndescribing how much quantity is delivered for each\n{@link IShoppingSaleUnitStock stock} in {@link IShoppingOrder }.\n\nFor reference, as an order can be delivered in multiple times due to volume\nor weight problem, it is possible to have multiple `IShoppingDeliveryPiece`\nrecords for a single stock." - }, - "minItems": 1, - "title": "List of pieces of the delivery", - "description": "List of pieces of the delivery." - }, - "shippers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "company": { - "type": "string", - "nullable": true - }, - "name": { - "type": "string" - }, - "mobile": { - "type": "string" - } - }, - "required": [ - "id", - "created_at", - "company", - "name", - "mobile" - ] - }, - "title": "List of shippers of the delivery", - "description": "List of shippers of the delivery." - }, - "state": { - "type": "string", - "enum": [ - "none", - "underway", - "preparing", - "manufacturing", - "shipping", - "delivering", - "arrived" - ], - "description": "State of delivery\n\n- `none`: No delivery or journey record\n- `underway`: Some pieces are over preparing, but others are not\n- `preparing`: At least preparing\n- `manufacturing`: At least manufacturing\n- `shipping`: At least shipping\n- `delivering`: At least delivering\n- `arrived`: Every pieces are arrived" - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the record", - "description": "Creation time of the record." - } - }, - "required": [ - "id", - "seller", - "journeys", - "pieces", - "shippers", - "state", - "created_at" - ], - "description": "Delivery information.\n\nWhen delivering {@link IShoppingOrderGood goods} to\n{@link IShoppingCustomer customer}, {@link IShoppingSeller seller} can deliver\nmultiple {@link IShoppingSaleUnitStock stocks}, goods at once. Also, it is\npossible to deliver a stock or good in multiple times due to physical restriction\nlike volume or weight problem.\n\nAs you can see from above, the relationship between delivery with\n{@link IShoppingOrder order} (or {@link IShoppingOrderGood good}) is not 1: 1 or\nN: 1, but M: N. Entity `IShoppingDelivery` has been designed to represent such\nrelationship, by referencing target stocks or goods through subsidiary entity\n{@link IShoppingDeliveryPiece }.\n\nAlso, delivery does not end with only one step. It has multiple processes like\nmanufacturing, planning, shipping and delivering. Those steps are represented by\nanother subsidiary entity {@link IShoppingDeliveryJourney }." - }, - "description": "Create a delivery.\n\nCreate a {@link IShoppingDelivery delivery} record targetting\n{@link IShoppingOrder orders}, their {@link IShoppingOrderGood goods} and\n{@link IShoppingSaleUnitStock stocks} ({@link IShoppingDeliveryPiece }) with\n{@link IShoppingDeliveryJourney journeys} and\n{@link IShoppingDeliveryShipper shippers} info.\n\nNote that, composition of the {@link IShoppingDeliveryPiece } must not over\nthe required. To identify which pieces are required, recommend to call\nthe {@link incompletes } function with target orders'\n{@link IShoppingOrderPublish.id }s before calling this one." - }, - { - "method": "patch", - "path": "/shoppings/sellers/deliveries/incompletes", - "name": "shoppings_sellers_deliveries_incompletes_patch", - "parameters": [ - { - "type": "object", - "properties": { - "publish_ids": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - } - } - }, - "required": [ - "publish_ids" - ] - } - ], - "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "publish_id": { - "type": "string", - "format": "uuid", - "title": "Target order's {@link IShoppingOrderPublish.id }", - "description": "Target order's {@link IShoppingOrderPublish.id }." - }, - "good_id": { - "type": "string", - "format": "uuid", - "title": "Target good's {@link IShoppingOrderGood.id }", - "description": "Target good's {@link IShoppingOrderGood.id }." - }, - "stock_id": { - "type": "string", - "format": "uuid", - "title": "Target stock's {@link IShoppingSaleUnitStock.id }", - "description": "Target stock's {@link IShoppingSaleUnitStock.id }." - }, - "quantity": { - "type": "number", - "minimum": 0, - "title": "Quantity of the stock", - "description": "Quantity of the stock.\n\nIt can be precision value to express splitted shipping." - } - }, - "required": [ - "publish_id", - "good_id", - "stock_id", - "quantity" - ], - "description": "Creation information of the delivery piece." - } - }, - "description": "Get list of incomplete pieces.\n\nGet list of {@link IShoppingDeliveryPiece incomplete pieces} of target\norders' {@link IShoppingOrderPublish.id }s.\n\nIf you specify target orders' publish IDs, then this function returns\nincompleted pieces of the orders with computation as an Array of\n{@link IShoppingDeliveryPiece.ICreate } type.\n\nYou can utillize the result to make a huge {@link IShoppingDelivery delivery}\nfor integrated delivering, and also possible to make multiple deliveries for\nsplitted delivering." - }, - { - "method": "post", - "path": "/shoppings/sellers/deliveries/{deliveryId}/journeys", - "name": "shoppings_sellers_deliveries_journeys_postByDeliveryid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged delivery's " - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "preparing", - "manufacturing", - "shipping", - "delivering" - ], - "title": "Type of journey", - "description": "Type of journey.\n\n- preparing\n- manufacturing\n- shipping\n- delivering" - }, - "title": { - "type": "string", - "nullable": true, - "title": "Title of journey", - "description": "Title of journey." - }, - "description": { - "type": "string", - "nullable": true, - "title": "Description of journey", - "description": "Description of journey." - }, - "started_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Start time of the journey", - "description": "Start time of the journey." - }, - "completed_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Completion time of the journey", - "description": "Completion time of the journey." - } - }, - "required": [ - "type", - "title", - "description", - "started_at", - "completed_at" - ], - "description": "Creation information of the delivery journey." - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the record", - "description": "Creation time of the record." - }, - "deleted_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Deletion time of the record", - "description": "Deletion time of the record." - }, - "type": { - "type": "string", - "enum": [ - "preparing", - "manufacturing", - "shipping", - "delivering" - ] - }, - "title": { - "type": "string", - "nullable": true, - "title": "Title of journey", - "description": "Title of journey." - }, - "description": { - "type": "string", - "nullable": true, - "title": "Description of journey", - "description": "Description of journey." - }, - "started_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Start time of the journey", - "description": "Start time of the journey." - }, - "completed_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Completion time of the journey", - "description": "Completion time of the journey." - } - }, - "required": [ - "id", - "created_at", - "deleted_at", - "type", - "title", - "description", - "started_at", - "completed_at" - ], - "description": "Journey of delivery.\n\n`IShoppingDeliveryJourney` is a subsidiary entity of {@link IShoppingDelivery },\ndescribing each journey of the delivery. For reference, the word journey\nmeans each step of the delivery process, such as preparing, shipping, and\ndelivering {@link IShoppingOrderGood goods} to the\n{@link IShoppingCustomer customer}." - }, - "description": "Create a new journey.\n\nCreate a new {@link IShoppingDeliveryJourney journey} of the\n{@link IShoppingDelivery delivery}.\n\nThis action may change the related {@link IShoppingOrderGood.state }.\nAlso, if the target journey's type is \"delivering\", whether the property\n{@link IShoppingDeliveryJourney.completed_at } is null or not affects to\nthe related goods' states. If the property is not null, the state becomes\n\"arrived\". Otherwise, the state becomes \"delivering\"." - }, - { - "method": "put", - "path": "/shoppings/sellers/deliveries/{deliveryId}/journeys/{id}/complete", - "name": "shoppings_sellers_deliveries_journeys_complete_putByDeliveryidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged delivery's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target journey's " - }, - { - "type": "object", - "properties": { - "completed_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Completion time of the journey", - "description": "Completion time of the journey." - } - }, - "required": [ - "completed_at" - ], - "description": "Completion information of the delivery journey." - } - ], - "description": "Complete a journey.\n\nComplete a {@link IShoppingDeliveryJourney journey} of the\n{@link IShoppingDelivery delivery}. In other words, fills the\n{@link IShoppingDeliveryJourney.completed_at } property with current time.\n\nIf the target journey's type is \"delivering\", this action may change\nthe related {@link IShoppingOrderGood.state goods' states} to be \"arrived\"." - }, - { - "method": "delete", - "path": "/shoppings/sellers/deliveries/{deliveryId}/journeys/{id}", - "name": "shoppings_sellers_deliveries_journeys_eraseByDeliveryidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged delivery's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target journey's " - } - ], - "description": "Erase a journey.\n\nErase a {@link IShoppingDeliveryJourney journey} of the\n{@link IShoppingDelivery delivery}.\n\nIf erasing journey is the last one of the belonged delivery, this action\nmay change the related {@link IShoppingOrderGood.state }. By erasing the last\njourney, the state rolls back to the previous." - }, - { - "method": "post", - "path": "/shoppings/sellers/deliveries/{deliveryId}/shippers", - "name": "shoppings_sellers_deliveries_shippers_postByDeliveryid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged delivery's " - }, - { - "type": "object", - "properties": { - "company": { - "type": "string", - "nullable": true - }, - "name": { - "type": "string" - }, - "mobile": { - "type": "string" - } - }, - "required": [ - "company", - "name", - "mobile" - ] - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "company": { - "type": "string", - "nullable": true - }, - "name": { - "type": "string" - }, - "mobile": { - "type": "string" - } - }, - "required": [ - "id", - "created_at", - "company", - "name", - "mobile" - ] - }, - "description": "Create a new shipper.\n\nCreate a new {@link IShoppingDeliveryShipper shipper} of the\n{@link IShoppingDelivery delivery}.\n\nThis action does not affect to the related {@link IShoppingOrder orders} or\n{@link IShoppingOrderGood goods} like {@link IShoppingDeliveryJourney }\nor {@link IShoppingDeliveryPiece } case, but just informs to the\n{@link IShoppingCustomer customer}." - }, - { - "method": "delete", - "path": "/shoppings/sellers/coupons/{id}", - "name": "shoppings_sellers_coupons_eraseById", - "parameters": [ - { - "type": "string", - "description": "Target coupon's " - } - ], - "description": "Erase a coupon.\n\nErase a {@link IShoppingCoupon coupon} with given ID.\n\nFor reference, if there're some {@link IShoppingCouponTicket tickets}\nwhich are already issued from the target coupon, they would not be affected.\nThose tickets are still valid until their expration time." - }, - { - "method": "put", - "path": "/shoppings/sellers/sales/{id}/open", - "name": "shoppings_sellers_sales_open_putById", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target sale's " - }, - { - "type": "object", - "properties": { - "opened_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Opening time of the sale", - "description": "Opening time of the sale." - }, - "closed_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Closing time of the sale", - "description": "Closing time of the sale.\n\nIf this value is `null`, the sale be continued forever." - } - }, - "required": [ - "opened_at", - "closed_at" - ], - "description": "Update opening time information of sale." - } - ], - "description": "Change opening and closing time of a sale.\n\nUpdate a {@link IShoppingSale sale}'s opening and closing time.\n\nBy the way, if the sale still be opened or closed, it is not possible to\nchange the opening time. In contrary, if the sale already had been opened\nbut still not closed, it is possible to change the closing time.\n\nOf course, if closing time is less than opening time or not,\n428 unprocessable entity error would be thrown." - }, - { - "method": "post", - "path": "/shoppings/sellers/sales/{id}/replica", - "name": "shoppings_sellers_sales_replica_postById", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target sale's " - } - ], - "output": { - "type": "object", - "properties": { - "section_code": { - "type": "string", - "title": "Belonged section's {@link IShoppingSection.code }", - "description": "Belonged section's {@link IShoppingSection.code }." - }, - "status": { - "type": "string", - "enum": [ - "paused", - "suspended" - ], - "nullable": true, - "title": "Initial status of the sale", - "description": "Initial status of the sale.\n\n`null` or `undefined`: No restriction\n`paused`: Starts with {@link ITimestamps.paused_at paused} status\n`suspended`: Starts with {@link ITimestamps.suspended_at suspended} status" - }, - "opened_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Opening time of the sale", - "description": "Opening time of the sale." - }, - "closed_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Closing time of the sale", - "description": "Closing time of the sale.\n\nIf this value is `null`, the sale be continued forever." - }, - "content": { - "type": "object", - "properties": { - "title": { - "type": "string" - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string" - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - } - }, - "thumbnails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - } - } - }, - "required": [ - "title", - "format", - "body", - "files", - "thumbnails" - ] - }, - "channels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "code": { - "type": "string", - "title": "Target channel's {@link IShoppingChannel.code }", - "description": "Target channel's {@link IShoppingChannel.code }." - }, - "category_ids": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - }, - "title": "List of target categories' {@link IShoppingChannelCategory.id }s", - "description": "List of target categories' {@link IShoppingChannelCategory.id }s.\n\nIf empty, it means all categories of the channel is listing the sale." - } - }, - "required": [ - "code", - "category_ids" - ], - "description": "Creation information of the target channel (and categories) of sale to sell." - } - }, - "units": { - "type": "array", - "items": { - "type": "object", - "properties": { - "options": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "string", - "number", - "boolean" - ], - "title": "Type of descriptive option", - "description": "Type of descriptive option.\n\nWhich typed value should be written when purchasing." - }, - "name": { - "type": "string", - "title": "Readable name of the option", - "description": "Readable name of the option." - } - }, - "required": [ - "type", - "name" - ], - "description": "Creation information of the descriptive option." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "select" - ], - "title": "Discriminant for the type of selectable option", - "description": "Discriminant for the type of selectable option." - }, - "name": { - "type": "string", - "title": "Represents the name of the option", - "description": "Represents the name of the option." - }, - "variable": { - "type": "boolean", - "title": "Whether the option is variable or not", - "description": "Whether the option is variable or not.\n\nWhen type of current option is \"select\", this attribute means whether\nselecting different candidate value affects the final stock or not." - }, - "candidates": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Represents the name of the candidate value", - "description": "Represents the name of the candidate value." - } - }, - "required": [ - "name" - ], - "description": "Creation information of the candidate value." - }, - "minItems": 1, - "title": "List of candidate values", - "description": "List of candidate values." - } - }, - "required": [ - "type", - "name", - "variable", - "candidates" - ], - "description": "Creation information of the selectable option." - } - ] - }, - "title": "List of options", - "description": "List of options." - }, - "stocks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Representative name of the stock", - "description": "Representative name of the stock." - }, - "price": { - "type": "object", - "properties": { - "nominal": { - "type": "number", - "minimum": 0, - "title": "Nominal price", - "description": "Nominal price.\n\nThis is not {@link real real price} to pay, but just a nominal price to show.\nIf this value is greater than the {@link real real price}, it would be shown\nlike {@link IShoppingSeller seller} is giving a discount." - }, - "real": { - "type": "number", - "minimum": 0, - "title": "Real price to pay", - "description": "Real price to pay." - } - }, - "required": [ - "nominal", - "real" - ], - "description": "Shopping price interface." - }, - "quantity": { - "type": "integer", - "minimum": 1, - "title": "Initial inventory quantity", - "description": "Initial inventory quantity." - }, - "choices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "option_index": { - "type": "integer", - "description": "Target option's index number in\n{@link IShoppingSaleUnit.ICreate.options }." - }, - "candidate_index": { - "type": "integer", - "description": "Target candidate's index number in\n{@link IShoppingSaleUnitSelectableOption.ICreate.candidates }." - } - }, - "required": [ - "option_index", - "candidate_index" - ], - "description": "Creation information of stock choice." - }, - "title": "List of choices", - "description": "List of choices.\n\nWhich candidate values being chosen for each option." - } - }, - "required": [ - "name", - "price", - "quantity", - "choices" - ], - "description": "Creation information of the stock." - }, - "minItems": 1, - "title": "List of final stocks", - "description": "List of final stocks." - }, - "name": { - "type": "string", - "title": "Representative name of the unit", - "description": "Representative name of the unit." - }, - "primary": { - "type": "boolean", - "title": "Whether the unit is primary or not", - "description": "Whether the unit is primary or not.\n\nJust a labeling value." - }, - "required": { - "type": "boolean", - "title": "Whether the unit is required or not", - "description": "Whether the unit is required or not.\n\nWhen the unit is required, the customer must select the unit. If do not\nselect, customer can't buy it.\n\nFor example, if there's a sale \"Macbook Set\" and one of the unit is the\n\"Main Body\", is it possible to buy the \"Macbook Set\" without the\n\"Main Body\" unit? This property is for that case." - } - }, - "required": [ - "options", - "stocks", - "name", - "primary", - "required" - ], - "description": "Creation information of sale unit." - }, - "minItems": 1 - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "section_code", - "opened_at", - "closed_at", - "content", - "channels", - "units", - "tags" - ], - "description": "Creation information of sale." - }, - "description": "Get replica of a sale.\n\nGet a {@link IShoppingSale.ICreate } typed info of the target sale for\nreplication.\n\nIt would be useful for creating a new replication\n{@link IShoppingSale sale} with similar innformatiopn." - }, - { - "method": "delete", - "path": "/shoppings/sellers/sales/{id}/pause", - "name": "shoppings_sellers_sales_pause_eraseById", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target sale's " - } - ], - "description": "Pause a sale.\n\nPause a {@link IShoppingSale sale} from {@link open opened} state.\nTherefore, the sale can not be operated again until it be\n{@link restore restored}. By the way, {@link IShoppingCustomer customer}\nstill can sale from the {@link index } and {@link at } API endpints, but\n\"paused\" label would be attached.\n\nAlso, customer no more can put into the shopping cart, either.\nEven the sale already had been put into the shopping cart, the\n{@link IShoppingCartCommodity commodity} will not be listed on the\nshopping cart. Also, it is not possible to appling an\n{@link IShoppingOrder order} with the paused sale's commodity, either.\n\nBy the way, if the sale already had been applied to an order, the order\ncan be {@link IShoppingOrderPublish published} and\n{@link IShoppingSeller seller} must {@link IShoppingDelivery deliver} the\ngood to the customer." - }, - { - "method": "delete", - "path": "/shoppings/sellers/sales/{id}/suspend", - "name": "shoppings_sellers_sales_suspend_eraseById", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target sale's " - } - ], - "description": "Suspend a sale.\n\nSuspend a {@link IShoppingSale sale} from {@link open opened} state.\nTherefore, the sale can not be operated again until it be\n{@link restore restored} and {@link IShoppingCustomer customer} cannot\nsee the sale from the {@link index } and {@link at } API.\n\nAlso, customer no more can put into the shopping cart, either.\nEven the sale already had been put into the shopping cart, the\n{@link IShoppingCartCommodity commodity} will not be listed on the\nshopping cart. Also, it is not possible to appling an\n{@link IShoppingOrder order} with the suspended sale's commodity, either.\n\nBy the way, if the sale already had been applied to an order, the order\ncan be {@link IShoppingOrderPublish published} and\n{@link IShoppingSeller seller} must {@link IShoppingDelivery deliver} the\ngood to the customer." - }, - { - "method": "put", - "path": "/shoppings/sellers/sales/{id}/restore", - "name": "shoppings_sellers_sales_restore_putById", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target sale's " - } - ], - "description": "Restore a sale\n\nRestore a {@link IShoppingSale sale} from {@link pause paused} or\n{@link suspend suspended} state\n\nTherefore the sale can be operated again if its\n{@link IShoppingSale.closed_at closing time} has not been reached.\nAlso, if a {@link IShoppingCustomer customer} had put the sale into the\nshopping cart when being paused or suspended, the\n{@link IShoppingCartCommodity commodity} will be listed again on the\nshopping cart." - }, - { - "method": "post", - "path": "/shoppings/sellers/sales/{saleId}/questions/{questionId}/answer", - "name": "shoppings_sellers_sales_questions_answer_postBySaleidAndQuestionid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target question's " - }, - { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "title", - "body", - "files" - ], - "description": "Creation information of the article." - } - ], - "output": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "seller", - "id", - "snapshots", - "created_at" - ], - "description": "Answers to questions about sale snapshots.\n\n`IShoppingSaleInquiryAnswer` is an entity that embodies the official\nanswer written by the {@link IShoppingSeller seller} to the\n{@link IShoppingSaleInquiry inquiry} written by the\n{@link IShoppingCustomer customer}.\n\nOf course, in addition to writing an official response like this, it is\nalso possible for the seller to communicate with the inqjuiry written\ncustomer and multiple customers through\n{@link IShoppingSaleInquiryComment comments} in the attribution inquiry.\n\nFor refererence, it is not possible to write comments on this answer.\nEncourage people to write comments on the inquiry article. This is to\nprevent comments from being scattered in both inquiry and answer\narticles." - }, - "description": "Write an answer article.\n\nWrite a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry question article} written by a\n{@link IShoppingCustomer }.\n\nNote that, this is the formal answer that can be written only one per\na question article (but {@link update updatable}). Therefore, it needs to\nguide the {@link IShoppingSeller seller} to write it carefully.\n\nAlso, as seller can write {@link IShoppingSaleInquiryComment comments} to\nthe question article as many as he/she wants, it would be useful for\nadditional communication." - }, - { - "method": "put", - "path": "/shoppings/sellers/sales/{saleId}/questions/{questionId}/answer", - "name": "shoppings_sellers_sales_questions_answer_putBySaleidAndQuestionid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target question's " - }, - { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "title", - "body", - "files" - ], - "description": "Creation information of the article." - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ] - }, - "description": "Update an answer article.\n\nUpdate a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry question article} written by a\n{@link IShoppingCustomer }.\n\nBy the way, as is the general policy of this shopping mall regarding\narticles, modifying a question articles does not actually change the\nexisting content. Modified content is accumulated and recorded in the\nexisting article record as a new\n{@link IShoppingSaleInquiryAnswer.ISnapshot snapshot}. And this is made\npublic to everyone, including the {@link IShoppingCustomer customer} and the\n{@link IShoppingSeller seller}, and anyone who can view the article can\nalso view the entire editing histories.\n\nThis is to prevent customers or sellers from modifying their articles and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." - }, - { - "method": "post", - "path": "/shoppings/sellers/sales/{saleId}/questions/{inquiryId}/comments", - "name": "shoppings_sellers_sales_questions_comments_postBySaleidAndInquiryid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target inquiry's " - }, - { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales." - }, - { - "method": "patch", - "path": "/shoppings/sellers/sales/{saleId}/questions/{inquiryId}/comments", - "name": "shoppings_sellers_sales_questions_comments_patchBySaleidAndInquiryid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "body": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the comments with pagination and searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales." - }, - { - "method": "get", - "path": "/shoppings/sellers/sales/{saleId}/questions/{inquiryId}/comments/{id}", - "name": "shoppings_sellers_sales_questions_comments_getBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales." - }, - { - "method": "put", - "path": "/shoppings/sellers/sales/{saleId}/questions/{inquiryId}/comments/{id}", - "name": "shoppings_sellers_sales_questions_comments_putBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - }, - { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot content of the comment." - }, - "description": "Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." - }, - { - "method": "patch", - "path": "/shoppings/sellers/sales/{saleId}/questions", - "name": "shoppings_sellers_sales_questions_patchBySaleid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "secret", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at" - ], - "description": "Summarized information of the question." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every summarized questions.\n\nList up every {@link IShoppingSaleQuestion.ISummary summarized questions} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned questions are summarized, not detailed. If you want\nto get the detailed information of a question, use {@link adridges } function\nor {@link at } function for each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.ISummary.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.ISummary.secret } with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." - }, - { - "method": "patch", - "path": "/shoppings/sellers/sales/{saleId}/questions/abridges", - "name": "shoppings_sellers_sales_questions_abridges_patchBySaleid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "secret", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "description": "Abridged information of the question." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every abridged questions.\n\nList up every {@link IShoppingSaleQuestion.IAbridge abridged questions} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned questions are abridged, not detailed. If you want\nto get the detailed information of a question, use {@link at } function\nfor each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.IAridge.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.IAridge.secret } with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/sellers/sales/{saleId}/questions/{id}", - "name": "shoppings_sellers_sales_questions_getBySaleidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target question's " - } - ], - "output": { - "type": "object", - "properties": { - "secret": { - "type": "boolean", - "title": "Whether the question article is secret or not", - "description": "Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content." - }, - "type": { - "type": "string", - "enum": [ - "question" - ], - "title": "Type of the derived inquiry", - "description": "Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion }\n- `review`: {@link IShoppingSaleReview }" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "seller", - "id", - "snapshots", - "created_at" - ], - "description": "Formal answer for the inquiry by the seller.", - "title": "Formal answer for the inquiry by the seller", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "secret", - "type", - "customer", - "answer", - "read_by_seller", - "id", - "snapshots", - "created_at" - ], - "description": "Question about sale snapshot.\n\n`IShoppingSaleQuestion` is a subtype entity of {@link IShoppingSaleInquiry },\nand is used when a {@link IShoppingCustomer customer} wants to ask something\nabout a {@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at\nthe time) registered by the {@link IShoppingSeller seller}.\n\nAnd, like most shopping malls, `IShoppingSaleQuestion` also provides\na {@link secret } attribute, allowing you to create a \"secret message\" that can\nonly be viewed by the seller and the customer who wrote the question." - }, - "description": "Get a question info.\n\nGet a detailed {@link IShoppingSaleQuestion question} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s question. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nquestions of the sales except the {@link IShoppingSaleQuestion.secret }\nvalue is `false`." - }, - { - "method": "post", - "path": "/shoppings/sellers/sales/{saleId}/reviews/{reviewId}/answer", - "name": "shoppings_sellers_sales_reviews_answer_postBySaleidAndReviewid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target review's " - }, - { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "title", - "body", - "files" - ], - "description": "Creation information of the article." - } - ], - "output": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "seller", - "id", - "snapshots", - "created_at" - ], - "description": "Answers to questions about sale snapshots.\n\n`IShoppingSaleInquiryAnswer` is an entity that embodies the official\nanswer written by the {@link IShoppingSeller seller} to the\n{@link IShoppingSaleInquiry inquiry} written by the\n{@link IShoppingCustomer customer}.\n\nOf course, in addition to writing an official response like this, it is\nalso possible for the seller to communicate with the inqjuiry written\ncustomer and multiple customers through\n{@link IShoppingSaleInquiryComment comments} in the attribution inquiry.\n\nFor refererence, it is not possible to write comments on this answer.\nEncourage people to write comments on the inquiry article. This is to\nprevent comments from being scattered in both inquiry and answer\narticles." - }, - "description": "Write an answer article.\n\nWrite a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry review article} written by a\n{@link IShoppingCustomer }.\n\nNote that, this is the formal answer that can be written only one per\na review article (but {@link update updatable}). Therefore, it needs to\nguide the {@link IShoppingSeller seller} to write it carefully.\n\nAlso, as seller can write {@link IShoppingSaleInquiryComment comments} to\nthe review article as many as he/she wants, it would be useful for\nadditional communication." - }, - { - "method": "put", - "path": "/shoppings/sellers/sales/{saleId}/reviews/{reviewId}/answer", - "name": "shoppings_sellers_sales_reviews_answer_putBySaleidAndReviewid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target review's " - }, - { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "title", - "body", - "files" - ], - "description": "Creation information of the article." - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ] - }, - "description": "Update an answer article.\n\nUpdate a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry review article} written by a\n{@link IShoppingCustomer }.\n\nBy the way, as is the general policy of this shopping mall regarding\narticles, modifying a review articles does not actually change the\nexisting content. Modified content is accumulated and recorded in the\nexisting article record as a new\n{@link IShoppingSaleInquiryAnswer.ISnapshot snapshot}. And this is made\npublic to everyone, including the {@link IShoppingCustomer customer} and the\n{@link IShoppingSeller seller}, and anyone who can view the article can\nalso view the entire editing histories.\n\nThis is to prevent customers or sellers from modifying their articles and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." - }, - { - "method": "post", - "path": "/shoppings/sellers/sales/{saleId}/reviews/{inquiryId}/comments", - "name": "shoppings_sellers_sales_reviews_comments_postBySaleidAndInquiryid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target inquiry's " - }, - { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales." - }, - { - "method": "patch", - "path": "/shoppings/sellers/sales/{saleId}/reviews/{inquiryId}/comments", - "name": "shoppings_sellers_sales_reviews_comments_patchBySaleidAndInquiryid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "body": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the comments with pagination and searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales." - }, - { - "method": "get", - "path": "/shoppings/sellers/sales/{saleId}/reviews/{inquiryId}/comments/{id}", - "name": "shoppings_sellers_sales_reviews_comments_getBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - } - ], - "output": { - "type": "object", - "properties": { - "writer": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "administrator" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "seller" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "customer": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "type", - "member", - "customer", - "citizen", - "id", - "created_at" - ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - } - ] - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "parent_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "title": "Parent comment's ID", - "description": "Parent comment's ID." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of comment", - "description": "Creation time of comment." - } - }, - "required": [ - "writer", - "id", - "parent_id", - "snapshots", - "created_at" - ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." - }, - "description": "Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales." - }, - { - "method": "put", - "path": "/shoppings/sellers/sales/{saleId}/reviews/{inquiryId}/comments/{id}", - "name": "shoppings_sellers_sales_reviews_comments_putBySaleidAndInquiryidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged inquiry's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target inquiry comment's " - }, - { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ], - "title": "Format of body", - "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "format", - "body", - "files" - ], - "description": "Creation information of the comment." - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or comment." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of comment", - "description": "Content body of comment." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "body", - "files" - ], - "description": "Snapshot content of the comment." - }, - "description": "Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." - }, - { - "method": "patch", - "path": "/shoppings/sellers/sales/{saleId}/reviews", - "name": "shoppings_sellers_sales_reviews_patchBySaleid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - }, - "minimum": { - "type": "number", - "minimum": 0, - "maximum": 100 - }, - "maximum": { - "type": "number", - "minimum": 0, - "maximum": 100 - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at", - "-score", - "+score" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "score": { - "type": "number", - "title": "Score of the review", - "description": "Score of the review." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - } - }, - "required": [ - "score", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at" - ], - "description": "Summarized information of the review." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every summarized reviews.\n\nList up every {@link IShoppingSaleReview.ISummary summarized reviews} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned reviews are summarized, not detailed. If you want\nto get the detailed information of a review, use {@link adridges } function\nor {@link at } function for each article.\n\nAlso, returned review has {@link IShoppingSaleReview.ISummary.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." - }, - { - "method": "patch", - "path": "/shoppings/sellers/sales/{saleId}/reviews/abridges", - "name": "shoppings_sellers_sales_reviews_abridges_patchBySaleid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "answered": { - "type": "boolean", - "nullable": true - }, - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "title_or_body": { - "type": "string" - }, - "from": { - "type": "string", - "format": "date-time" - }, - "to": { - "type": "string", - "format": "date-time" - }, - "minimum": { - "type": "number", - "minimum": 0, - "maximum": 100 - }, - "maximum": { - "type": "number", - "minimum": 0, - "maximum": 100 - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at", - "-nickname", - "-answered_at", - "-title", - "-updated_at", - "+nickname", - "+answered_at", - "+title", - "+updated_at", - "-score", - "+score" - ] - }, - "title": "Sorting conditions", - "description": "Sorting conditions." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of summarized informations with pagination searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "score": { - "type": "number", - "minimum": 0, - "maximum": 100, - "title": "Score of the review", - "description": "Score of the review." - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "title": "Formal answer for the inquiry by the seller", - "description": "Formal answer for the inquiry by the seller.", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "title": { - "type": "string", - "title": "Title of the last snapshot", - "description": "Title of the last snapshot." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the article", - "description": "Creation time of the article." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Modification time of the article", - "description": "Modification time of the article.\n\nIn other words, the time when the last snapshot was created." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "score", - "customer", - "answer", - "read_by_seller", - "id", - "title", - "created_at", - "updated_at", - "format", - "body", - "files" - ], - "description": "Abridged information of the review." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every abridged reviews.\n\nList up every {@link IShoppingSaleReview.IAbridge abridged reviews} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned reviews are abridged, not detailed. If you want\nto get the detailed information of a review, use {@link at } function\nfor each article.\n\nAlso, returned review has {@link IShoppingSaleReview.IAridge.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/sellers/sales/{saleId}/reviews/{id}", - "name": "shoppings_sellers_sales_reviews_getBySaleidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target review's " - } - ], - "output": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "review" - ], - "title": "Type of the derived inquiry", - "description": "Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion }\n- `review`: {@link IShoppingSaleReview }" - }, - "customer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "customer" - ], - "title": "Discriminant for the type of customer", - "description": "Discriminant for the type of customer." - }, - "member": { - "type": "object", - "properties": { - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.", - "title": "Citizen information", - "nullable": true - }, - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\nIf the member also signed up as a seller.", - "title": "Seller information", - "nullable": true - }, - "administrator": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the administrator has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Administrator information.\n\nIf the member also signed up as an administrator.", - "title": "Administrator information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "nickname": { - "type": "string", - "title": "Nickname that uniquely identifies the member", - "description": "Nickname that uniquely identifies the member." - }, - "emails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "string", - "format": "email", - "title": "Email address value", - "description": "Email address value." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one." - }, - "title": "List of emails", - "description": "List of emails." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother words, the time when the member has signed up." - } - }, - "required": [ - "citizen", - "seller", - "administrator", - "id", - "nickname", - "emails", - "created_at" - ], - "description": "Membership information.\n\nIf the customer has joined as a member.", - "title": "Membership information", - "nullable": true - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen information.\n\nIf the customer has verified his real name and mobile number.", - "title": "Citizen information", - "nullable": true - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "channel": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "external_user": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "citizen": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "mobile": { - "type": "string", - "pattern": "^[0-9]*$", - "title": "Mobile number", - "description": "Mobile number." - }, - "name": { - "type": "string", - "title": "Real name, or equivalent nickname", - "description": "Real name, or equivalent nickname." - } - }, - "required": [ - "id", - "created_at", - "mobile", - "name" - ], - "description": "Citizen activation info.", - "title": "Citizen activation info", - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record.\n\nAnother word, first time when the external user connected." - }, - "application": { - "type": "string", - "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." - }, - "uid": { - "type": "string", - "title": "Identifier key of external user from the external system", - "description": "Identifier key of external user from the external system." - }, - "nickname": { - "type": "string", - "title": "Nickname of external user in the external system", - "description": "Nickname of external user in the external system." - }, - "data": { - "description": "Additional information about external user from the external\nsystem." - } - }, - "required": [ - "id", - "citizen", - "created_at", - "application", - "uid", - "nickname", - "data" - ], - "description": "External user information.\n\nWhen the customer has come frome an external service.", - "title": "External user information", - "nullable": true - }, - "href": { - "type": "string", - "format": "uri", - "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." - }, - "referrer": { - "type": "string", - "format": "uri", - "nullable": true, - "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." - }, - "ip": { - "oneOf": [ - { - "type": "string", - "format": "ipv4" - }, - { - "type": "string", - "format": "ipv6" - } - ], - "title": "Connection IP Address", - "description": "Connection IP Address." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the connection record", - "description": "Creation time of the connection record." - } - }, - "required": [ - "type", - "member", - "citizen", - "id", - "channel", - "external_user", - "href", - "referrer", - "ip", - "created_at" - ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." - }, - "answer": { - "type": "object", - "properties": { - "seller": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation tmie of record", - "description": "Creation tmie of record.\n\nAnother words, the time when the seller has signed up." - } - }, - "required": [ - "id", - "created_at" - ], - "description": "Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "seller", - "id", - "snapshots", - "created_at" - ], - "description": "Formal answer for the inquiry by the seller.", - "title": "Formal answer for the inquiry by the seller", - "nullable": true - }, - "read_by_seller": { - "type": "boolean", - "title": "Whether the seller has viewed the inquiry or not", - "description": "Whether the seller has viewed the inquiry or not." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "snapshots": { - "type": "array", - "items": { - "type": "object", - "properties": { - "score": { - "type": "number", - "minimum": 0, - "maximum": 100, - "title": "Score of the review", - "description": "Score of the review." - }, - "id": { - "type": "string", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of snapshot record", - "description": "Creation time of snapshot record.\n\nIn other words, creation time or update time or article." - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." - }, - "body": { - "type": "string", - "title": "Content body of article", - "description": "Content body of article." - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - }, - "title": "List of attachment files", - "description": "List of attachment files." - } - }, - "required": [ - "score", - "id", - "created_at", - "format", - "title", - "body", - "files" - ], - "description": "Snapshot content of the review article." - }, - "minItems": 1, - "title": "List of snapshot contents", - "description": "List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of article", - "description": "Creation time of article." - } - }, - "required": [ - "type", - "customer", - "answer", - "read_by_seller", - "id", - "snapshots", - "created_at" - ], - "description": "Reviews for sale snapshots.\n\n`IShoppingSaleReview` is a subtype entity of {@link IShoppingSaleInquiry },\nand is used when a {@link IShoppingCustomer customer} purchases a\n{@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at the time)\nregistered by the {@link IShoppingSeller seller} as a product and leaves a\nreview and rating for it.\n\nFor reference, `IShoppingSaleReview` and\n{@link IShoppingOrderGod shopping_order_goods} have a logarithmic relationship\nof N: 1, but this does not mean that customers can continue to write reviews\nfor the same product indefinitely. Wouldn't there be restrictions, such as\nif you write a review once, you can write an additional review a month later?" - }, - "description": "Get a review info.\n\nGet a detailed {@link IShoppingSaleReview review} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s review. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nreviews of the sales." - }, - { - "method": "post", - "path": "/shoppings/sellers/sales/{saleId}/snapshots/{id}/replica", - "name": "shoppings_sellers_sales_snapshots_replica_postBySaleidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target snapshot's " - } - ], - "output": { - "type": "object", - "properties": { - "section_code": { - "type": "string", - "title": "Belonged section's {@link IShoppingSection.code }", - "description": "Belonged section's {@link IShoppingSection.code }." - }, - "status": { - "type": "string", - "enum": [ - "paused", - "suspended" - ], - "nullable": true, - "title": "Initial status of the sale", - "description": "Initial status of the sale.\n\n`null` or `undefined`: No restriction\n`paused`: Starts with {@link ITimestamps.paused_at paused} status\n`suspended`: Starts with {@link ITimestamps.suspended_at suspended} status" - }, - "opened_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Opening time of the sale", - "description": "Opening time of the sale." - }, - "closed_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "title": "Closing time of the sale", - "description": "Closing time of the sale.\n\nIf this value is `null`, the sale be continued forever." - }, - "content": { - "type": "object", - "properties": { - "title": { - "type": "string" - }, - "format": { - "type": "string", - "enum": [ - "html", - "md", - "txt" - ] - }, - "body": { - "type": "string" - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - } - }, - "thumbnails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 255, - "title": "File name, except extension", - "description": "File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string." - }, - "extension": { - "type": "string", - "minLength": 1, - "maxLength": 8, - "nullable": true, - "title": "Extension", - "description": "Extension.\n\nPossible to omit like `README` case." - }, - "url": { - "type": "string", - "format": "uri", - "title": "URL path of the real file", - "description": "URL path of the real file." - } - }, - "required": [ - "name", - "extension", - "url" - ] - } - } - }, - "required": [ - "title", - "format", - "body", - "files", - "thumbnails" - ] - }, - "channels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "code": { - "type": "string", - "title": "Target channel's {@link IShoppingChannel.code }", - "description": "Target channel's {@link IShoppingChannel.code }." - }, - "category_ids": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - }, - "title": "List of target categories' {@link IShoppingChannelCategory.id }s", - "description": "List of target categories' {@link IShoppingChannelCategory.id }s.\n\nIf empty, it means all categories of the channel is listing the sale." - } - }, - "required": [ - "code", - "category_ids" - ], - "description": "Creation information of the target channel (and categories) of sale to sell." - } - }, - "units": { - "type": "array", - "items": { - "type": "object", - "properties": { - "options": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "string", - "number", - "boolean" - ], - "title": "Type of descriptive option", - "description": "Type of descriptive option.\n\nWhich typed value should be written when purchasing." - }, - "name": { - "type": "string", - "title": "Readable name of the option", - "description": "Readable name of the option." - } - }, - "required": [ - "type", - "name" - ], - "description": "Creation information of the descriptive option." - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "select" - ], - "title": "Discriminant for the type of selectable option", - "description": "Discriminant for the type of selectable option." - }, - "name": { - "type": "string", - "title": "Represents the name of the option", - "description": "Represents the name of the option." - }, - "variable": { - "type": "boolean", - "title": "Whether the option is variable or not", - "description": "Whether the option is variable or not.\n\nWhen type of current option is \"select\", this attribute means whether\nselecting different candidate value affects the final stock or not." - }, - "candidates": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Represents the name of the candidate value", - "description": "Represents the name of the candidate value." - } - }, - "required": [ - "name" - ], - "description": "Creation information of the candidate value." - }, - "minItems": 1, - "title": "List of candidate values", - "description": "List of candidate values." - } - }, - "required": [ - "type", - "name", - "variable", - "candidates" - ], - "description": "Creation information of the selectable option." - } - ] - }, - "title": "List of options", - "description": "List of options." - }, - "stocks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Representative name of the stock", - "description": "Representative name of the stock." - }, - "price": { - "type": "object", - "properties": { - "nominal": { - "type": "number", - "minimum": 0, - "title": "Nominal price", - "description": "Nominal price.\n\nThis is not {@link real real price} to pay, but just a nominal price to show.\nIf this value is greater than the {@link real real price}, it would be shown\nlike {@link IShoppingSeller seller} is giving a discount." - }, - "real": { - "type": "number", - "minimum": 0, - "title": "Real price to pay", - "description": "Real price to pay." - } - }, - "required": [ - "nominal", - "real" - ], - "description": "Shopping price interface." - }, - "quantity": { - "type": "integer", - "minimum": 1, - "title": "Initial inventory quantity", - "description": "Initial inventory quantity." - }, - "choices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "option_index": { - "type": "integer", - "description": "Target option's index number in\n{@link IShoppingSaleUnit.ICreate.options }." - }, - "candidate_index": { - "type": "integer", - "description": "Target candidate's index number in\n{@link IShoppingSaleUnitSelectableOption.ICreate.candidates }." - } - }, - "required": [ - "option_index", - "candidate_index" - ], - "description": "Creation information of stock choice." - }, - "title": "List of choices", - "description": "List of choices.\n\nWhich candidate values being chosen for each option." - } - }, - "required": [ - "name", - "price", - "quantity", - "choices" - ], - "description": "Creation information of the stock." - }, - "minItems": 1, - "title": "List of final stocks", - "description": "List of final stocks." - }, - "name": { - "type": "string", - "title": "Representative name of the unit", - "description": "Representative name of the unit." - }, - "primary": { - "type": "boolean", - "title": "Whether the unit is primary or not", - "description": "Whether the unit is primary or not.\n\nJust a labeling value." - }, - "required": { - "type": "boolean", - "title": "Whether the unit is required or not", - "description": "Whether the unit is required or not.\n\nWhen the unit is required, the customer must select the unit. If do not\nselect, customer can't buy it.\n\nFor example, if there's a sale \"Macbook Set\" and one of the unit is the\n\"Main Body\", is it possible to buy the \"Macbook Set\" without the\n\"Main Body\" unit? This property is for that case." - } - }, - "required": [ - "options", - "stocks", - "name", - "primary", - "required" - ], - "description": "Creation information of sale unit." - }, - "minItems": 1 - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "section_code", - "opened_at", - "closed_at", - "content", - "channels", - "units", - "tags" - ], - "description": "Creation information of sale." - }, - "description": "Get replica of a snapshot.\n\nGet a {@link IShoppingSale.ICreate } typed info of the target\n{@link IShoppingSaleSnapshot snapshot} record for replication.\n\nIt would be useful for creating a new replication {@link IShoppingSale sale}\nfrom the old snapshot." - }, - { - "method": "post", - "path": "/shoppings/sellers/sales/{saleId}/units/{unitId}/stocks/{stockId}/supplements", - "name": "shoppings_sellers_sales_units_stocks_supplements_postBySaleidAndUnitidAndStockid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged unit's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target stock's " - }, - { - "type": "object", - "properties": { - "value": { - "type": "integer", - "title": "Supplemented quantity", - "description": "Supplemented quantity." - } - }, - "required": [ - "value" - ], - "description": "Creation information of the supplement." - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "integer", - "title": "Supplemented quantity", - "description": "Supplemented quantity." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the record", - "description": "Creation time of the record.\n\nAnother words, the time when inventory of the stock being supplemented." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Supplementation of inventory quantity of stock.\n\nYou know what? If a {@link IShoppingSaleUnitStock stock} has been sold over\nits {@link IShoppingSaleUnitStock.ICreate.quantity initial inventory quantity},\nthe stock can't be sold anymore, because of out of stock. In that case, how the\n{@link IShoppingSeller } should do?\n\nWhen the sotck is sold out, seller can supplement the inventory record by\nregistering this `IShoppingSaleUnitStockSupplement` record. Right, this\n`IShoppingSaleUnitStockSupplement` is an entity that embodies the\nsupplementation of the inventory quantity of the belonged stock." - }, - "description": "Create a supplement.\n\nCreate a {@link IShoppingSaleUnitStockSupplement supplement history} of a\nspecific {@link IShoppingSaleUnitStock stock}.\n\nTherefore, {@link IShoppingSaleUnitStockInventory.income inventory} of the\ntarget stock will be increased by the\n{@link IShoppingSaleUnitStockSupplement.value supplement's value}." - }, - { - "method": "patch", - "path": "/shoppings/sellers/sales/{saleId}/units/{unitId}/stocks/{stockId}/supplements", - "name": "shoppings_sellers_sales_units_stocks_supplements_patchBySaleidAndUnitidAndStockid", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged unit's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target stock's " - }, - { - "type": "object", - "properties": { - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-created_at", - "+created_at" - ] - }, - "title": "Sortable columns", - "description": "Sortable columns." - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request information of the stock supplement list." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "value": { - "type": "integer", - "title": "Supplemented quantity", - "description": "Supplemented quantity." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of the record", - "description": "Creation time of the record.\n\nAnother words, the time when inventory of the stock being supplemented." - } - }, - "required": [ - "id", - "value", - "created_at" - ], - "description": "Supplementation of inventory quantity of stock.\n\nYou know what? If a {@link IShoppingSaleUnitStock stock} has been sold over\nits {@link IShoppingSaleUnitStock.ICreate.quantity initial inventory quantity},\nthe stock can't be sold anymore, because of out of stock. In that case, how the\n{@link IShoppingSeller } should do?\n\nWhen the sotck is sold out, seller can supplement the inventory record by\nregistering this `IShoppingSaleUnitStockSupplement` record. Right, this\n`IShoppingSaleUnitStockSupplement` is an entity that embodies the\nsupplementation of the inventory quantity of the belonged stock." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every supplements.\n\nList up every {@link IShoppingSaleUnitStockSupplement supplement histories}\nof a specific {@link IShoppingSaleUnitStock stock}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleUnitStockSupplement.IRequest.search search condition} in\nthe request body. Also, it is possible to customize sequence order of\nrecords by configuring {@link IShoppingSaleUnitStockSupplement.IRequest.sort }\nproperty." - }, - { - "method": "put", - "path": "/shoppings/sellers/sales/{saleId}/units/{unitId}/stocks/{stockId}/supplements/{id}", - "name": "shoppings_sellers_sales_units_stocks_supplements_putBySaleidAndUnitidAndStockidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged unit's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target stock's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target supplement's " - }, - { - "type": "object", - "properties": { - "value": { - "type": "integer", - "title": "Supplemented quantity", - "description": "Supplemented quantity." - } - }, - "required": [ - "value" - ], - "description": "Creation information of the supplement." - } - ], - "description": "Update a supplement.\n\nUpdate quantity value of a {@link IShoppingSaleUnitStockSupplement supplement}\nof a specific {@link IShoppingSaleUnitStock stock}.\n\nTherefore, {@link IShoppingSaleUnitStockInventory.income inventory} of the\ntarget stock will be changed by the\n{@link IShoppingSaleUnitStockSupplement.value supplement's value}." - }, - { - "method": "delete", - "path": "/shoppings/sellers/sales/{saleId}/units/{unitId}/stocks/{stockId}/supplements/{id}", - "name": "shoppings_sellers_sales_units_stocks_supplements_eraseBySaleidAndUnitidAndStockidAndId", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Belonged sale's " - }, - { - "type": "string", - "format": "uuid", - "description": "Belonged unit's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target stock's " - }, - { - "type": "string", - "format": "uuid", - "description": "Target supplement's " - } - ], - "description": "Erase a supplement.\n\nErase a {@link IShoppingSaleUnitStockSupplement supplement} of a specific\n{@link IShoppingSaleUnitStock stock}.\n\nTherefore, {@link IShoppingSaleUnitStockInventory.income inventory} of the\ntarget stock will be decreased by the\n{@link IShoppingSaleUnitStockSupplement.value supplement's value}." - }, - { - "method": "patch", - "path": "/shoppings/sellers/systematic/channels", - "name": "shoppings_sellers_systematic_channels_patch", - "parameters": [ - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-channel.code", - "-channel.name", - "-channel.created_at", - "+channel.code", - "+channel.name", - "+channel.created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the channels with pagination and searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Name of the channel", - "description": "Name of the channel." - } - }, - "required": [ - "id", - "created_at", - "code", - "name" - ], - "description": "Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every channels.\n\nList up every {@link IShoppingChannel channels} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingChannel.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingChannel.IRequest.sort sort condition}." - }, - { - "method": "patch", - "path": "/shoppings/sellers/systematic/sections", - "name": "shoppings_sellers_systematic_sections_patch", - "parameters": [ - { - "type": "object", - "properties": { - "search": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "sort": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "-section.code", - "-section.name", - "-section.created_at", - "+section.code", - "+section.name", - "+section.created_at" - ] - } - }, - "page": { - "type": "integer", - "title": "Page number", - "description": "Page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - } - }, - "description": "Request of the sections with pagination and searching/sorting options." - } - ], - "output": { - "type": "object", - "properties": { - "pagination": { - "type": "object", - "properties": { - "current": { - "type": "integer", - "title": "Current page number", - "description": "Current page number." - }, - "limit": { - "type": "integer", - "title": "Limitation of records per a page", - "description": "Limitation of records per a page." - }, - "records": { - "type": "integer", - "title": "Total records in the database", - "description": "Total records in the database." - }, - "pages": { - "type": "integer", - "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." - } - }, - "required": [ - "current", - "limit", - "records", - "pages" - ], - "description": "Page information." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "code", - "name", - "created_at" - ], - "description": "Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future." - }, - "title": "List of records", - "description": "List of records." - } - }, - "required": [ - "pagination", - "data" - ], - "description": "A page.\n\nCollection of records with pagination indformation." - }, - "description": "List up every sections.\n\nList up every {@link IShoppingSection sections} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSection.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingSection.IRequest.sort sort condition}." - }, - { - "method": "get", - "path": "/shoppings/sellers/systematic/sections/{id}", - "name": "shoppings_sellers_systematic_sections_getById", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Target section's " - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "code", - "name", - "created_at" - ], - "description": "Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future." - }, - "description": "Get a section info.\n\nGet a detailed {@link IShoppingSection section} information." - }, - { - "method": "get", - "path": "/shoppings/sellers/systematic/sections/{code}/get", - "name": "shoppings_sellers_systematic_sections_get_getByCode", - "parameters": [ - { - "type": "string", - "description": "Target section's " - } - ], - "output": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "code": { - "type": "string", - "title": "Identifier code", - "description": "Identifier code." - }, - "name": { - "type": "string", - "title": "Representative name of the section", - "description": "Representative name of the section." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Creation time of record", - "description": "Creation time of record." - } - }, - "required": [ - "id", - "code", - "name", - "created_at" - ], - "description": "Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future." - }, - "description": "Get a section info by its code.\n\nGet a detailed {@link IShoppingSection section} information by its code." - } - ], - "errors": [ - { - "method": "post", - "path": "/shoppings/admins/coupons", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/admins/coupons", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/admins/coupons/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/admins/orders", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/admins/orders/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/admins/sales", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/admins/sales/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/admins/sales/{saleId}/snapshots", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/admins/sales/{saleId}/snapshots/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/admins/sales/{saleId}/snapshots/{id}/flip", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "post", - "path": "/shoppings/admins/systematic/channels/{channelCode}/categories", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/admins/systematic/channels/{channelCode}/categories", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/admins/systematic/channels/{channelCode}/categories/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/admins/systematic/channels/{channelCode}/categories/{id}/invert", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/admins/systematic/channels/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/admins/systematic/channels/hierarchical", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/admins/systematic/channels/{code}/get", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/customers/coupons", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/coupons/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "post", - "path": "/shoppings/customers/coupons/tickets", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/customers/coupons/tickets", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/coupons/tickets/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "post", - "path": "/shoppings/customers/carts/{cartId}/commodities", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/customers/carts/{cartId}/commodities", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/carts/{cartId}/commodities/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/customers/carts/{cartId}/commodities/discountable", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "post", - "path": "/shoppings/customers/orders", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/customers/orders", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/orders/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/orders/{id}/price", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/customers/orders/{id}/discountable", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "put", - "path": "/shoppings/customers/orders/{id}/discount", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/customers/sales", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/sales/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/customers/sales/{saleId}/snapshots", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/sales/{saleId}/snapshots/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/sales/{saleId}/snapshots/{id}/flip", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/customers/systematic/channels/{channelCode}/categories", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/systematic/channels/{channelCode}/categories/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/systematic/channels/{channelCode}/categories/{id}/invert", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/customers/systematic/channels/hierarchical", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/systematic/channels/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/customers/systematic/channels/{code}/get", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/sellers/deliveries", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/sellers/deliveries/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "post", - "path": "/shoppings/sellers/coupons", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/sellers/coupons", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/sellers/coupons/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/sellers/orders", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/sellers/orders/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "post", - "path": "/shoppings/sellers/sales", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/sellers/sales", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/sellers/sales/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "put", - "path": "/shoppings/sellers/sales/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/sellers/sales/{saleId}/snapshots", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/sellers/sales/{saleId}/snapshots/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/sellers/sales/{saleId}/snapshots/{id}/flip", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/sellers/systematic/channels/{channelCode}/categories", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/sellers/systematic/channels/{channelCode}/categories/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/sellers/systematic/channels/{channelCode}/categories/{id}/invert", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "patch", - "path": "/shoppings/sellers/systematic/channels/hierarchical", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/sellers/systematic/channels/{id}", - "messages": [ - "Failed to escape $ref" - ] - }, - { - "method": "get", - "path": "/shoppings/sellers/systematic/channels/{code}/get", - "messages": [ - "Failed to escape $ref" - ] - } - ], - "options": { - "keyword": false, - "separate": null - } -} \ No newline at end of file +{"openapi":"3.0.3","functions":[{"method":"get","path":"/monitors/health","name":"monitors_health_get","parameters":[],"description":"Health check API."},{"method":"get","path":"/monitors/performance","name":"monitors_performance_get","parameters":[],"output":{"type":"object","properties":{"cpu":{"type":"object","properties":{"user":{"type":"number"},"system":{"type":"number"}},"required":["user","system"]},"memory":{"type":"object","properties":{"rss":{"type":"number","description":"Resident Set Size, is the amount of space occupied in the main memory device (that is a subset of the total allocated memory) for the\nprocess, including all C++ and JavaScript objects and code."},"heapTotal":{"type":"number","title":"Refers to V8's memory usage","description":"Refers to V8's memory usage."},"heapUsed":{"type":"number","title":"Refers to V8's memory usage","description":"Refers to V8's memory usage."},"external":{"type":"number"},"arrayBuffers":{"type":"number","description":"Refers to memory allocated for `ArrayBuffer`s and `SharedArrayBuffer`s, including all Node.js Buffers. This is also included\nin the external value. When Node.js is used as an embedded library, this value may be `0` because allocations for `ArrayBuffer`s\nmay not be tracked in that case."}},"required":["rss","heapTotal","heapUsed","external","arrayBuffers"]},"resource":{"type":"object","properties":{"fsRead":{"type":"number"},"fsWrite":{"type":"number"},"involuntaryContextSwitches":{"type":"number"},"ipcReceived":{"type":"number"},"ipcSent":{"type":"number"},"majorPageFault":{"type":"number"},"maxRSS":{"type":"number"},"minorPageFault":{"type":"number"},"sharedMemorySize":{"type":"number"},"signalsCount":{"type":"number"},"swappedOut":{"type":"number"},"systemCPUTime":{"type":"number"},"unsharedDataSize":{"type":"number"},"unsharedStackSize":{"type":"number"},"userCPUTime":{"type":"number"},"voluntaryContextSwitches":{"type":"number"}},"required":["fsRead","fsWrite","involuntaryContextSwitches","ipcReceived","ipcSent","majorPageFault","maxRSS","minorPageFault","sharedMemorySize","signalsCount","swappedOut","systemCPUTime","unsharedDataSize","unsharedStackSize","userCPUTime","voluntaryContextSwitches"]}},"required":["cpu","memory","resource"]},"description":"Get performance information.\n\nGet perofmration information composed with CPU, memory and resource usage."},{"method":"get","path":"/monitors/system","name":"monitors_system_get","parameters":[],"output":{"type":"object","properties":{"uid":{"type":"number","title":"Random Unique ID","description":"Random Unique ID."},"arguments":{"type":"array","items":{"type":"string"},"description":"`process.argv`"},"commit":{"type":"object","properties":{"shortHash":{"type":"string"},"branch":{"type":"string"},"hash":{"type":"string"},"subject":{"type":"string"},"sanitizedSubject":{"type":"string"},"body":{"type":"string"},"author":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"}},"required":["name","email"],"description":"Git user account info."},"committer":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"}},"required":["name","email"],"description":"Git user account info."},"authored_at":{"type":"string"},"commited_at":{"type":"string"},"notes":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}}},"required":["shortHash","branch","hash","subject","sanitizedSubject","body","author","committer","authored_at","commited_at","tags"],"description":"Git commit info."},"package":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"description":{"type":"string"},"main":{"type":"string"},"typings":{"type":"string"},"scripts":{"type":"object","properties":{},"description":"Construct a type with a set of properties K of type T","additionalProperties":{"type":"string"}},"repository":{"type":"object","properties":{"type":{"type":"string","enum":["git"]},"url":{"type":"string"}},"required":["type","url"]},"author":{"type":"string"},"license":{"type":"string"},"bugs":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]},"homepage":{"type":"string"},"devDependencies":{"type":"object","properties":{},"description":"Construct a type with a set of properties K of type T","additionalProperties":{"type":"string"}},"dependencies":{"type":"object","properties":{},"description":"Construct a type with a set of properties K of type T","additionalProperties":{"type":"string"}},"publishConfig":{"type":"object","properties":{"registry":{"type":"string"}},"required":["registry"]},"files":{"type":"array","items":{"type":"string"}}},"required":["name","version","description","scripts","repository","author","license","bugs","homepage","dependencies"],"description":"NPM package info."},"created_at":{"type":"string","title":"Creation time of this server","description":"Creation time of this server."}},"required":["uid","arguments","commit","package","created_at"],"description":"System Information."},"description":"Get system information.\n\nGet system information with commit and package information.\n\nAs such information is a type of sensitive, response be encrypted."},{"method":"get","path":"/shoppings/admins/authenticate","name":"shoppings_admins_authenticate_get","parameters":[],"output":{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},"description":"Get administrator information.\n\nGet {@link IShoppingAdministrator.IInvert administrator} information of\ncurrent {@link IShoppingCustomer customer}.\n\nIf current {@link IShoppingMember member} is not an administrator,\nit throws 403 forbidden exception."},{"method":"post","path":"/shoppings/admins/authenticate","name":"shoppings_admins_authenticate_post","parameters":[{"type":"object","properties":{},"description":"Joining request info."}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},"description":"Join as an administrator.\n\nJoin as an administrator with {@link IShoppingAdministrator.IJoin joining info}.\n\nThis method is allowed only when the {@link IShoppingCustomer customer} already\nhas joined the {@link IShoppingMember membership}. IF not, he (she) must\naccomplish it before. If not, 403 forbidden exception would be thrown."},{"method":"put","path":"/shoppings/admins/authenticate/login","name":"shoppings_admins_authenticate_login_put","parameters":[{"type":"object","properties":{"email":{"type":"string","format":"email","title":"Email address of member","description":"Email address of member.\n\nIf the member has multiple email addresses, just use one of them."},"password":{"type":"string","title":"Password of the member account","description":"Password of the member account."}},"required":["email","password"],"description":"Login request info."}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},"description":"Login as an administrator.\n\nLogin as an administrator with {@link IShoppingAdministrator.ILogin login info}.\n\nThis method has exactly same effect with\n{@link ShoppingApi.functional.customers.authenticate.login} function, but\nreturned type is a llttle different. The similar function returns\n{@link IShoppingCustomer} type that starting from the customer information, so\nthat you have to access to the administrator info through\n`customer.member.administrator`. In contrast with that, this method returns\n{@link IShoppingAdministrator.IInvert} type that starting from the administrator\ninfo, so that can access to the customer info through `administrator.customer`.\n\nOf course, to use this function, you had to {@link join} as an administrator\nbefore. If not, 403 forbidden exception would be thrown,"},{"method":"delete","path":"/shoppings/admins/coupons/{id}","name":"shoppings_admins_coupons_eraseById","parameters":[{"type":"string","description":" Target coupon's {@link IShoppingCoupon.id}"}],"description":"Erase a coupon.\n\nErase a {@link IShoppingCoupon coupon} with given ID.\n\nFor reference, if there're some {@link IShoppingCouponTicket tickets}\nwhich are already issued from the target coupon, they would not be affected.\nThose tickets are still valid until their expration time."},{"method":"post","path":"/shoppings/admins/deposits","name":"shoppings_admins_deposits_post","parameters":[{"type":"object","properties":{"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[-1,1]}},"required":["code","source","direction"]}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","created_at","code","source","direction"]},"description":"Create a new deposit metadata.\n\nCreate a new {@link IShoppingDeposit deposit} metadata.\n\nThis action means that adding a new origin reason of deposit's income/outcome.\nOf course, creating a new deposit record does not mean that automatically\nincrease or decrease the {@link IShoppingCustomer customer}'s balance\nfollowing the record's reason why. The logic must be developed manually\nin the backend side."},{"method":"patch","path":"/shoppings/admins/deposits","name":"shoppings_admins_deposits_patch","parameters":[{"type":"object","properties":{"search":{"type":"object","properties":{"source":{"type":"string"},"code":{"type":"string"},"direction":{"type":"number","enum":[-1,1]}}},"sort":{"type":"array","items":{"type":"string","enum":["-deposit.source","-deposit.code","-deposit.direction","+deposit.source","+deposit.code","+deposit.direction"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","created_at","code","source","direction"]},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"Get deposit metadata list.\n\nList up every {@link IShoppingDeposit deposit} metadata informations\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingDeposit.IRequest.search search condition} in the request body.\nAlso, it is possible to customize sequence order of records by configuring\n{@link IShoppingDeposit.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/admins/deposits/{id}","name":"shoppings_admins_deposits_getById","parameters":[{"type":"string","format":"uuid","description":" Target deposit's {@link IShoppingDeposit.id}"}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","created_at","code","source","direction"]},"description":"Get a deposit metadata.\n\nGet a {@link IShoppingDeposit deposit} metadata information with its ID."},{"method":"delete","path":"/shoppings/admins/deposits/{id}","name":"shoppings_admins_deposits_eraseById","parameters":[{"type":"string","format":"uuid","description":" Target deposit's {@link IShoppingDeposit.id}"}],"description":"Erase a deposit metadata.\n\nErase a {@link IShoppingDeposit deposit} metadata, so that no more\n{@link IShoppingCustomer customer}'s balance does not be increased or\ndecreased by the deposit's reason why."},{"method":"get","path":"/shoppings/admins/deposits/{code}/get","name":"shoppings_admins_deposits_get_getByCode","parameters":[{"type":"string"}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","created_at","code","source","direction"]},"description":"Get a deposit metadata by its code.\n\nGet a {@link IShoppingDeposit deposit} metadata information with its code."},{"method":"post","path":"/shoppings/admins/mileages","name":"shoppings_admins_mileages_post","parameters":[{"type":"object","properties":{"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[-1,1]},"value":{"type":"number","nullable":true}},"required":["code","source","direction","value"]}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"value":{"type":"number","nullable":true},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","value","created_at","code","source","direction"]},"description":"Create a new mileage metadata.\n\nCreate a new {@link IShoppingMileage mileage} metadata.\n\nThis action means that adding a new origin reason of mileage's income/outcome.\nOf course, creating a new mileage record does not mean that automatically\nincrease or decrease the {@link IShoppingCustomer customer}'s balance\nfollowing the record's reason why. The logic must be developed manually\nin the backend side."},{"method":"patch","path":"/shoppings/admins/mileages","name":"shoppings_admins_mileages_patch","parameters":[{"type":"object","properties":{"search":{"type":"object","properties":{"source":{"type":"string"},"code":{"type":"string"},"direction":{"type":"number","enum":[-1,1]}}},"sort":{"type":"array","items":{"type":"string","enum":["-mileage.source","-mileage.code","-mileage.direction","+mileage.source","+mileage.code","+mileage.direction"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"value":{"type":"number","nullable":true},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","value","created_at","code","source","direction"]},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"Get mileage metadata list.\n\nList up every {@link IShoppingMileage mileage} metadata informations\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingMileage.IRequest.search search condition} in the request body.\nAlso, it is possible to customize sequence order of records by configuring\n{@link IShoppingMileage.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/admins/mileages/{id}","name":"shoppings_admins_mileages_getById","parameters":[{"type":"string","format":"uuid","description":" Target mileage's {@link IShoppingMileage.id}"}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"value":{"type":"number","nullable":true},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","value","created_at","code","source","direction"]},"description":"Get a mileage metadata.\n\nGet a {@link IShoppingMileage mileage} metadata information with its ID."},{"method":"delete","path":"/shoppings/admins/mileages/{id}","name":"shoppings_admins_mileages_eraseById","parameters":[{"type":"string","format":"uuid","description":" Target mileage's {@link IShoppingMileage.id}"}],"description":"Erase a mileage metadata.\n\nErase a {@link IShoppingMileage mileage} metadata, so that no more\n{@link IShoppingCustomer customer}'s balance does not be increased or\ndecreased by the mileage's reason why."},{"method":"get","path":"/shoppings/admins/mileages/{code}/get","name":"shoppings_admins_mileages_get_getByCode","parameters":[{"type":"string"}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"value":{"type":"number","nullable":true},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","value","created_at","code","source","direction"]},"description":"Get a mileage metadata by its code.\n\nGet a {@link IShoppingMileage mileage} metadata information with its code."},{"method":"post","path":"/shoppings/admins/mileages/donations","name":"shoppings_admins_mileages_donations_post","parameters":[{"type":"object","properties":{"citizen_id":{"type":"string","format":"uuid"},"value":{"type":"number"},"reason":{"type":"string"}},"required":["citizen_id","value","reason"]}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"administrator":{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"value":{"type":"number"},"reason":{"type":"string"},"created_at":{"type":"string","format":"date-time"}},"required":["id","administrator","citizen","value","reason","created_at"]},"description":"Donate a mileage to a citizen.\n\nDonate a mileage to a specific {@link IShoppingCitizen citizen} from\ncurrent {@link IShoppingAdministrator administrator}, with detailed\nreason why.\n\nNote that, as donating mileage affects to the citizen's balance and\ncurrent shopping mall's operating profit, administrator must archive\nthe detailed reason why the mileage is donated."},{"method":"patch","path":"/shoppings/admins/mileages/donations","name":"shoppings_admins_mileages_donations_patch","parameters":[{"type":"object","properties":{"search":{"type":"object","properties":{"citizen":{"type":"object","properties":{"mobile":{"type":"string","pattern":"^[0-9]*$"},"name":{"type":"string"}}},"minimum":{"type":"number","minimum":0},"maximum":{"type":"number","minimum":0},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"sort":{"type":"array","items":{"type":"string","enum":["-donation.created_at","-donation.value","-donation.reason","+donation.created_at","+donation.value","+donation.reason"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"administrator":{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"value":{"type":"number"},"reason":{"type":"string"},"created_at":{"type":"string","format":"date-time"}},"required":["id","administrator","citizen","value","reason","created_at"]},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every mileage donation histories.\n\nList up every {@link IShoppingMileageDonation mileage donation histories}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingMileageDonation.IRequest.search search condition} in\nthe request body. Also, it is possible to customize sequence order of\nrecords by configuring {@link IShoppingMileageDonation.IRequest.sort sort}."},{"method":"get","path":"/shoppings/admins/mileages/donations/{id}","name":"shoppings_admins_mileages_donations_getById","parameters":[{"type":"string","format":"uuid","description":" Target history's {@link IShoppingMileageDonation.id}"}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"administrator":{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"value":{"type":"number"},"reason":{"type":"string"},"created_at":{"type":"string","format":"date-time"}},"required":["id","administrator","citizen","value","reason","created_at"]},"description":"Get a mileage donation history.\n\nGet a {@link IShoppingMileageDonation mileage donation history} with its ID."},{"method":"post","path":"/shoppings/admins/sales/{saleId}/questions/{inquiryId}/comments","name":"shoppings_admins_sales_questions_comments_postBySaleidAndInquiryid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Target inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales."},{"method":"patch","path":"/shoppings/admins/sales/{saleId}/questions/{inquiryId}/comments","name":"shoppings_admins_sales_questions_comments_patchBySaleidAndInquiryid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"body":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the comments with pagination and searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales."},{"method":"get","path":"/shoppings/admins/sales/{saleId}/questions/{inquiryId}/comments/{id}","name":"shoppings_admins_sales_questions_comments_getBySaleidAndInquiryidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales."},{"method":"put","path":"/shoppings/admins/sales/{saleId}/questions/{inquiryId}/comments/{id}","name":"shoppings_admins_sales_questions_comments_putBySaleidAndInquiryidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"},{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot content of the comment."},"description":"Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence."},{"method":"patch","path":"/shoppings/admins/sales/{saleId}/questions","name":"shoppings_admins_sales_questions_patchBySaleid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["seller","id","title","created_at","updated_at"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["secret","customer","answer","read_by_seller","id","title","created_at","updated_at"],"description":"Summarized information of the question."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every summarized questions.\n\nList up every {@link IShoppingSaleQuestion.ISummary summarized questions} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned questions are summarized, not detailed. If you want\nto get the detailed information of a question, use {@link adridges} function\nor {@link at} function for each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.ISummary.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.ISummary.secret} with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}."},{"method":"patch","path":"/shoppings/admins/sales/{saleId}/questions/abridges","name":"shoppings_admins_sales_questions_abridges_patchBySaleid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["seller","id","title","created_at","updated_at","format","body","files"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["secret","customer","answer","read_by_seller","id","title","created_at","updated_at","format","body","files"],"description":"Abridged information of the question."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every abridged questions.\n\nList up every {@link IShoppingSaleQuestion.IAbridge abridged questions} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned questions are abridged, not detailed. If you want\nto get the detailed information of a question, use {@link at} function\nfor each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.IAridge.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.IAridge.secret} with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/admins/sales/{saleId}/questions/{id}","name":"shoppings_admins_sales_questions_getBySaleidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Target question's {@link IShoppingSaleQuestion.id}"}],"output":{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"type":{"type":"string","enum":["question"],"title":"Type of the derived inquiry","description":"Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion}\n- `review`: {@link IShoppingSaleReview}"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["seller","id","snapshots","created_at"],"description":"Formal answer for the inquiry by the seller.","nullable":true,"title":"Formal answer for the inquiry by the seller"},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["secret","type","customer","answer","read_by_seller","id","snapshots","created_at"],"description":"Question about sale snapshot.\n\n`IShoppingSaleQuestion` is a subtype entity of {@link IShoppingSaleInquiry},\nand is used when a {@link IShoppingCustomer customer} wants to ask something\nabout a {@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at\nthe time) registered by the {@link IShoppingSeller seller}.\n\nAnd, like most shopping malls, `IShoppingSaleQuestion` also provides\na {@link secret} attribute, allowing you to create a \"secret message\" that can\nonly be viewed by the seller and the customer who wrote the question."},"description":"Get a question info.\n\nGet a detailed {@link IShoppingSaleQuestion question} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s question. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nquestions of the sales except the {@link IShoppingSaleQuestion.secret}\nvalue is `false`."},{"method":"post","path":"/shoppings/admins/sales/{saleId}/reviews/{inquiryId}/comments","name":"shoppings_admins_sales_reviews_comments_postBySaleidAndInquiryid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Target inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales."},{"method":"patch","path":"/shoppings/admins/sales/{saleId}/reviews/{inquiryId}/comments","name":"shoppings_admins_sales_reviews_comments_patchBySaleidAndInquiryid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"body":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the comments with pagination and searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales."},{"method":"get","path":"/shoppings/admins/sales/{saleId}/reviews/{inquiryId}/comments/{id}","name":"shoppings_admins_sales_reviews_comments_getBySaleidAndInquiryidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales."},{"method":"put","path":"/shoppings/admins/sales/{saleId}/reviews/{inquiryId}/comments/{id}","name":"shoppings_admins_sales_reviews_comments_putBySaleidAndInquiryidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"},{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot content of the comment."},"description":"Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence."},{"method":"patch","path":"/shoppings/admins/sales/{saleId}/reviews","name":"shoppings_admins_sales_reviews_patchBySaleid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"minimum":{"type":"number","minimum":0,"maximum":100},"maximum":{"type":"number","minimum":0,"maximum":100}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at","-score","+score"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number","title":"Score of the review","description":"Score of the review."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["seller","id","title","created_at","updated_at"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["score","customer","answer","read_by_seller","id","title","created_at","updated_at"],"description":"Summarized information of the review."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every summarized reviews.\n\nList up every {@link IShoppingSaleReview.ISummary summarized reviews} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned reviews are summarized, not detailed. If you want\nto get the detailed information of a review, use {@link adridges} function\nor {@link at} function for each article.\n\nAlso, returned review has {@link IShoppingSaleReview.ISummary.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}."},{"method":"patch","path":"/shoppings/admins/sales/{saleId}/reviews/abridges","name":"shoppings_admins_sales_reviews_abridges_patchBySaleid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"minimum":{"type":"number","minimum":0,"maximum":100},"maximum":{"type":"number","minimum":0,"maximum":100}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at","-score","+score"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"title":"Score of the review","description":"Score of the review."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["seller","id","title","created_at","updated_at","format","body","files"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["score","customer","answer","read_by_seller","id","title","created_at","updated_at","format","body","files"],"description":"Abridged information of the review."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every abridged reviews.\n\nList up every {@link IShoppingSaleReview.IAbridge abridged reviews} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned reviews are abridged, not detailed. If you want\nto get the detailed information of a review, use {@link at} function\nfor each article.\n\nAlso, returned review has {@link IShoppingSaleReview.IAridge.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/admins/sales/{saleId}/reviews/{id}","name":"shoppings_admins_sales_reviews_getBySaleidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Target review's {@link IShoppingSaleReview.id}"}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["review"],"title":"Type of the derived inquiry","description":"Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion}\n- `review`: {@link IShoppingSaleReview}"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["seller","id","snapshots","created_at"],"description":"Formal answer for the inquiry by the seller.","nullable":true,"title":"Formal answer for the inquiry by the seller"},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"title":"Score of the review","description":"Score of the review."},"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["score","id","created_at","format","title","body","files"],"description":"Snapshot content of the review article."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["type","customer","answer","read_by_seller","id","snapshots","created_at"],"description":"Reviews for sale snapshots.\n\n`IShoppingSaleReview` is a subtype entity of {@link IShoppingSaleInquiry},\nand is used when a {@link IShoppingCustomer customer} purchases a\n{@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at the time)\nregistered by the {@link IShoppingSeller seller} as a product and leaves a\nreview and rating for it.\n\nFor reference, `IShoppingSaleReview` and\n{@link IShoppingOrderGod shopping_order_goods} have a logarithmic relationship\nof N: 1, but this does not mean that customers can continue to write reviews\nfor the same product indefinitely. Wouldn't there be restrictions, such as\nif you write a review once, you can write an additional review a month later?"},"description":"Get a review info.\n\nGet a detailed {@link IShoppingSaleReview review} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s review. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nreviews of the sales."},{"method":"put","path":"/shoppings/admins/systematic/channels/{channelCode}/categories/{id}","name":"shoppings_admins_systematic_channels_categories_putByChannelcodeAndId","parameters":[{"type":"string","description":" Belonged channel's {@link IShoppingChannel.code }"},{"type":"string","description":" Target category's {@link IShoppingChannelCategory.id}"},{"type":"object","properties":{"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent category's ID","description":"Parent category's ID."},"name":{"type":"string","title":"Representative name of the category","description":"Representative name of the category.\n\nThe name must be unique within the parent category. If no parent exists,\nthen the name must be unique within the channel between no parent\ncategories."}},"required":["parent_id","name"],"description":"Creation information of the category."}],"description":"Update a category.\n\nUpdate a {@link IShoppingChannelCategory category}'s name. If required,\nit is possible to change the parent category by its ID. Of course, detaching\nfrom the parent category so that becoming the root category is also possible."},{"method":"delete","path":"/shoppings/admins/systematic/channels/{channelCode}/categories/merge","name":"shoppings_admins_systematic_channels_categories_merge_eraseByChannelcode","parameters":[{"type":"string","description":" Belonged channel's {@link IShoppingChannel.code }"},{"type":"object","properties":{"keep":{"type":"string","format":"uuid","title":"Target record to keep after merging","description":"Target record to keep after merging.\n\nAfter merge process, {@link absorbed} records would be merged into\nthis {@link keep} record."},"absorbed":{"type":"array","items":{"type":"string","format":"uuid"},"title":"To be absorbed to {@link keep} after merging","description":"To be absorbed to {@link keep} after merging."}},"required":["keep","absorbed"],"description":"Record Merge DTO.\n\n`IRecordMerge` is a structure for merging records.\n\nThe `merge` means that merging multiple {@link IRecordMerge.absorbed}\nrecords into {@link IRecordMerge.keep} instead of deleting\n{@link IRecordMerge.absorbed} records.\n\nIf there're some dependent tables of the target `table` having\nunique constraint on foriegn key column, such dependent tables\nalso perform the merge process, too.\n\nOf course, if there're another dependent tables under those\ndependents, they also perform the merge process recursively as well.\nSuch recursive merge process still works for self-recursive\n(tree-structured) tables."}],"description":"Merge multiple categories into one.\n\nIn this shopping mall system, it is not possible to delete a\n{@link IShoppingChannelCategory category}, because it is a systematic\nentity affecting to all other core entities like\n{@link IShoppingSale sales}. Instead of deleting, you can merge multiple\ncategories into one.\n\nIf you specify a category to absorb others, then all of other categories\nwill be merged into the specified one. Also, subsidiary entities of\ncategories also be merged and their references also be merged cascadingly."},{"method":"post","path":"/shoppings/admins/systematic/channels","name":"shoppings_admins_systematic_channels_post","parameters":[{"type":"object","properties":{"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["code","name"],"description":"Creation information of the channel."}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"description":"Create a new channel.\n\nCreate a new {@link IShoppingChannel channel} with given code and name.\n\nAs channel means an individual market,\n{@link IShoppingAdministrator administrator} should perform this action\nonly when a new application being registered."},{"method":"patch","path":"/shoppings/admins/systematic/channels","name":"shoppings_admins_systematic_channels_patch","parameters":[{"type":"object","properties":{"search":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-channel.code","-channel.name","-channel.created_at","+channel.code","+channel.name","+channel.created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the channels with pagination and searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every channels.\n\nList up every {@link IShoppingChannel channels} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingChannel.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingChannel.IRequest.sort sort condition}."},{"method":"put","path":"/shoppings/admins/systematic/channels/{id}","name":"shoppings_admins_systematic_channels_putById","parameters":[{"type":"string","format":"uuid","description":" Target channel's {@link IShoppingChannel.code}"},{"type":"object","properties":{"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["name"],"description":"Updating information of the channel."}],"description":"Update a channel.\n\nUpdate a {@link IShoppingChannel channel}'s name.\n\nNote that, it is not possible to change the channel's code. If you want to\nto do it forcibly, then {@link create} new one and {@link merge} with it."},{"method":"delete","path":"/shoppings/admins/systematic/channels/merge","name":"shoppings_admins_systematic_channels_merge_erase","parameters":[{"type":"object","properties":{"keep":{"type":"string","format":"uuid","title":"Target record to keep after merging","description":"Target record to keep after merging.\n\nAfter merge process, {@link absorbed} records would be merged into\nthis {@link keep} record."},"absorbed":{"type":"array","items":{"type":"string","format":"uuid"},"title":"To be absorbed to {@link keep} after merging","description":"To be absorbed to {@link keep} after merging."}},"required":["keep","absorbed"],"description":"Record Merge DTO.\n\n`IRecordMerge` is a structure for merging records.\n\nThe `merge` means that merging multiple {@link IRecordMerge.absorbed}\nrecords into {@link IRecordMerge.keep} instead of deleting\n{@link IRecordMerge.absorbed} records.\n\nIf there're some dependent tables of the target `table` having\nunique constraint on foriegn key column, such dependent tables\nalso perform the merge process, too.\n\nOf course, if there're another dependent tables under those\ndependents, they also perform the merge process recursively as well.\nSuch recursive merge process still works for self-recursive\n(tree-structured) tables."}],"description":"Merge multiple channels into one.\n\nIn this shopping mall system, it is not possible to delete a\n{@link IShoppingChannel channel}, because it is a systematic entity\naffecting to all other core entities like customers, members and\nsales. Instead of deleting, you can merge multiple channels into one.\n\nIf you specify a channel to absorb others, then all of other channels\nwill be merged into the specified one. Also, subsidiary entities of\nchannels also be merged and their references also be merged cascadingly."},{"method":"post","path":"/shoppings/admins/systematic/sections","name":"shoppings_admins_systematic_sections_post","parameters":[{"type":"object","properties":{"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."}},"required":["code","name"],"description":"Creation information of the section."}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","code","name","created_at"],"description":"Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future."},"description":"Create a new section.\n\nCreate a new {@link IShoppingSection section} with given code and name.\n\nAs section means a spatial unit of a market that handling different type\nof products with other section, {@link IShoppingAdministrator administrator}\nshould perform this action only when a new section being required."},{"method":"patch","path":"/shoppings/admins/systematic/sections","name":"shoppings_admins_systematic_sections_patch","parameters":[{"type":"object","properties":{"search":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-section.code","-section.name","-section.created_at","+section.code","+section.name","+section.created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the sections with pagination and searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","code","name","created_at"],"description":"Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every sections.\n\nList up every {@link IShoppingSection sections} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSection.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingSection.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/admins/systematic/sections/{id}","name":"shoppings_admins_systematic_sections_getById","parameters":[{"type":"string","format":"uuid","description":" Target section's {@link IShoppingSection.id}"}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","code","name","created_at"],"description":"Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future."},"description":"Get a section info.\n\nGet a detailed {@link IShoppingSection section} information."},{"method":"put","path":"/shoppings/admins/systematic/sections/{id}","name":"shoppings_admins_systematic_sections_putById","parameters":[{"type":"string","format":"uuid","description":" Target section's {@link IShoppingSection.code}"},{"type":"object","properties":{"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."}},"required":["name"],"description":"Updating information of the section."}],"description":"Update a section.\n\nUpdate a {@link IShoppingSection section}'s name.\n\nNote that, it is not possible to change the section's code. If you want to\nto do it forcibly, then {@link create} new one and {@link merge} with it."},{"method":"delete","path":"/shoppings/admins/systematic/sections/merge","name":"shoppings_admins_systematic_sections_merge_erase","parameters":[{"type":"object","properties":{"keep":{"type":"string","format":"uuid","title":"Target record to keep after merging","description":"Target record to keep after merging.\n\nAfter merge process, {@link absorbed} records would be merged into\nthis {@link keep} record."},"absorbed":{"type":"array","items":{"type":"string","format":"uuid"},"title":"To be absorbed to {@link keep} after merging","description":"To be absorbed to {@link keep} after merging."}},"required":["keep","absorbed"],"description":"Record Merge DTO.\n\n`IRecordMerge` is a structure for merging records.\n\nThe `merge` means that merging multiple {@link IRecordMerge.absorbed}\nrecords into {@link IRecordMerge.keep} instead of deleting\n{@link IRecordMerge.absorbed} records.\n\nIf there're some dependent tables of the target `table` having\nunique constraint on foriegn key column, such dependent tables\nalso perform the merge process, too.\n\nOf course, if there're another dependent tables under those\ndependents, they also perform the merge process recursively as well.\nSuch recursive merge process still works for self-recursive\n(tree-structured) tables."}],"description":"Merge multiple sections into one.\n\nIn this shopping mall system, it is not possible to delete a\n{@link IShoppingSection section}, because it is a systematic entity\naffecting to all other core entities like {@link IShoppingSale sales}.\nInstead of deleting, you can merge multiple sections into one.\n\nIf you specify a section to absorb others, then all of other sections\nwill be merged into the specified one. Also, subsidiary entities of\nsections also be merged and their references also be merged cascadingly."},{"method":"get","path":"/shoppings/admins/systematic/sections/{code}/get","name":"shoppings_admins_systematic_sections_get_getByCode","parameters":[{"type":"string","description":" Target section's {@link IShoppingSection.code}"}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","code","name","created_at"],"description":"Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future."},"description":"Get a section info by its code.\n\nGet a detailed {@link IShoppingSection section} information by its code."},{"method":"patch","path":"/shoppings/customers/authenticate/refresh","name":"shoppings_customers_authenticate_refresh_patch","parameters":[{"type":"object","properties":{"value":{"type":"string"}},"required":["value"]}],"output":{"type":"object","properties":{"setHeaders":{"type":"object","properties":{"Authorization":{"type":"string"}},"required":["Authorization"]},"token":{"type":"object","properties":{"access":{"type":"string"},"refresh":{"type":"string"},"expired_at":{"type":"string","format":"date-time"},"refreshable_until":{"type":"string","format":"date-time"}},"required":["access","refresh","expired_at","refreshable_until"]},"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["setHeaders","token","type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"]},"description":"Refresh the authentication token.\n\nCreate a new {@link IShoppingCustomer.IToken.access access token} of a\n{@link IShoppingCustomer customer} with the pre-issued\n{@link IShoppingCustomer.IToken.refresh refresh} token.\n\nNote that, this function is available until the\n{@link IShoppingCustomer.IToken.refreshable_until} value."},{"method":"get","path":"/shoppings/customers/authenticate","name":"shoppings_customers_authenticate_get","parameters":[],"output":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"description":"Get current customer info.\n\nGet current {@link IShoppingCustomer customer} information from the\n{@link IShoppingCustomer.IToken.access access token}."},{"method":"post","path":"/shoppings/customers/authenticate","name":"shoppings_customers_authenticate_post","parameters":[{"type":"object","properties":{"channel_code":{"type":"string"},"external_user":{"type":"object","properties":{"citizen":{"type":"object","properties":{"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"password":{"type":"string","title":"Password of external user from the external system","description":"Password of external user from the external system.\n\nThis is a password issued to the user by an external service,\nand is by no means the actual user password. However, for\n{@link IShoppingCustomer customers} who entered the same\napplication and code as the current external system user, this is\nto determine whether to view this as a correct external system\nuser or a violation."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["citizen","application","uid","nickname","password","data"],"nullable":true},"href":{"type":"string","format":"uri"},"referrer":{"type":"string","format":"uri","nullable":true},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}]}},"required":["channel_code","external_user","href","referrer"]}],"output":{"type":"object","properties":{"setHeaders":{"type":"object","properties":{"Authorization":{"type":"string"}},"required":["Authorization"]},"token":{"type":"object","properties":{"access":{"type":"string"},"refresh":{"type":"string"},"expired_at":{"type":"string","format":"date-time"},"refreshable_until":{"type":"string","format":"date-time"}},"required":["access","refresh","expired_at","refreshable_until"]},"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["setHeaders","token","type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"]},"description":"Create a new customer record.\n\nThis shopping mall system defines everyone participating in this market as\na \"customer\". And the customer records are not archived based on individual\n{@link IShoppingCitizen people}, but based on the unit of connection.\nTherefore, even if it is the same person, a new {@link IShoppingCustomer}\nrecord is created every time a connection is made.\n\nTherefore, all Client Applications that access this service must first call\nthis function, report the customer's inflow path to the server, and create\nan {@link IShoppingCustomer.IToken.access access token}. If you skip this\nfunction call, all the other API functions would be prohibited. There is no\nexception, even if you want to {@link activate} your citizenship or\n{@link login} with your {@link IShoppingMember member account}. Before\nauthenticating yourself or logging in, be sure to call this function first.\nThis also applies when an {@link IShoppingAdministrator administrator} or\n{@link IShoppingSeller seller} logs in.\n\nAlso, the authentication token has an\n{@link IShoppingCustomer.IToken.expired_at expiration time}\nand cannot be used permanently. For reference, the authentication token is\nvalid for 3 hours, and if you want to maintain customer authentication even\nafter 3 hours, you must call the {@link refresh} function."},{"method":"post","path":"/shoppings/customers/authenticate/join","name":"shoppings_customers_authenticate_join_post","parameters":[{"type":"object","properties":{"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"citizen":{"type":"object","properties":{"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["mobile","name"],"description":"Citizen information.","nullable":true,"title":"Citizen information"},"email":{"type":"string","format":"email","title":"Email address of member","description":"Email address of member.\n\nIf the member has multiple email addresses, just use one of them."},"password":{"type":"string","title":"Password of the member account","description":"Password of the member account."}},"required":["nickname","citizen","email","password"],"description":"Joining request info."}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"description":"Join membership.\n\n{@link IShoppingCustomer Customer} signs up for\n{@link IShoppingMember membership} of current shopping mall system.\n\nIf you've performed the {@link IShoppingCitizen citizenship}\n{@link activate activation} too, then you can skip the {@link activate}\nfunction calling everytime you log in from now on. Also, if the person had\n{@link IShoppingOrder purchased} with {@link activate} and {@link external}\nfunction calling, you can also access to the order history too. In other\nwords, activity details prior to membership registration can also be\naccessed with continuity.\n\nFor reference, as described in the {@link create} function, before calling\nthis `join` function, you must first create a customer record and token by\ncalling the {@link create} function."},{"method":"put","path":"/shoppings/customers/authenticate/login","name":"shoppings_customers_authenticate_login_put","parameters":[{"type":"object","properties":{"email":{"type":"string","format":"email","title":"Email address of member","description":"Email address of member.\n\nIf the member has multiple email addresses, just use one of them."},"password":{"type":"string","title":"Password of the member account","description":"Password of the member account."}},"required":["email","password"],"description":"Login request info."}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"description":"Membership login.\n\n{@link IShoppingCustomer Customer} logs in with his/her\n{@link IShoppingMember membership} account with the email and password.\n\nIf the {@link IShoppingMember member} has previously performed\n{@link activate citizenship activation}, the {@link IShoppingCustomer.citizen}\nvalue would be filled in accordingly. And if the member has also signed up\nas an {@link IShoppingAdministrator administrator} or\n{@link IShoppingSeller seller}, the relevant information is also entered\naccordingly.\n\nFor reference, as described in the {@link create} function, before calling\nthis `login` function, you must first create a customer record and token by\ncalling the {@link create} function."},{"method":"post","path":"/shoppings/customers/authenticate/activate","name":"shoppings_customers_authenticate_activate_post","parameters":[{"type":"object","properties":{"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["mobile","name"],"description":"Creation information of citizen verification."}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"description":"Activate citizenship.\n\n{@link IShoppingCustomer Customer} activates his/her\n{@link IShoppingCitizen citizenship} with mobile number and real name.\n\nIf the custommer already {@link join joined} to the\n{@link IShoppingMember membership}, then you can skip the citizenship\n{@link activation} function calling everytime you log in from now on.\nOf course, such story would be same to the {@link external} function, too.\n\nFor reference, as described in the {@link create} function, before calling\nthis `activate` function, you must first create a customer record and token\nby calling the {@link create} function."},{"method":"post","path":"/shoppings/customers/authenticate/external","name":"shoppings_customers_authenticate_external_post","parameters":[{"type":"object","properties":{"citizen":{"type":"object","properties":{"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"password":{"type":"string","title":"Password of external user from the external system","description":"Password of external user from the external system.\n\nThis is a password issued to the user by an external service,\nand is by no means the actual user password. However, for\n{@link IShoppingCustomer customers} who entered the same\napplication and code as the current external system user, this is\nto determine whether to view this as a correct external system\nuser or a violation."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["citizen","application","uid","nickname","password","data"],"description":"Creation information of external user."}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"description":"Enroll external user info.\n\n{@link IShoppingCustomer Customer} enrolls his/her\n{@link IShoppingExternalUser external user} information from other service.\n\nIt has similar effect with the {@link join membership joining} function,\nso that if you've performed the {@link IShoppingCitizen citizenship}\n{@link activate activation} too, then you can skip the {@link activate}\nfunction calling everytime you call this `external` function with same\ninfo from now on. Also, if the person had\n{@link IShoppingOrder purchased} with {@link activate} and {@link join}\nfunction calling, you can also access to the order history too. In other\nwords, activity details prior to external server registration can also be\naccessed with continuity.\n\nFor reference, as described in the {@link create} function, before calling\nthis `external` function, you must first create a customer record and token\nby calling the {@link create} function."},{"method":"put","path":"/shoppings/customers/authenticate/password/change","name":"shoppings_customers_authenticate_password_change_put","parameters":[{"type":"object","properties":{"oldbie":{"type":"string","title":"Current password","description":"Current password."},"newbie":{"type":"string","title":"The new password to change","description":"The new password to change."}},"required":["oldbie","newbie"],"description":"Request info of password change."}],"description":"Change password.\n\nChange password of {@link IShoppingMember member} with the current password.\n\nThe reason why the current password is required is for security."},{"method":"post","path":"/shoppings/customers/deposits/charges","name":"shoppings_customers_deposits_charges_post","parameters":[{"type":"object","properties":{"value":{"type":"number"}},"required":["value"]}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"publish":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"paid_at":{"type":"string","format":"date-time","nullable":true},"cancelled_at":{"type":"string","format":"date-time","nullable":true}},"required":["id","created_at","paid_at","cancelled_at"],"nullable":true},"created_at":{"type":"string","format":"date-time"},"value":{"type":"number"}},"required":["id","customer","publish","created_at","value"]},"description":"Create a new deposit charge application.\n\nCreate a new {@link IShoppingDepositCharge deposit charge application}.\n\nBy the way, this function does not mean completion the deposit charge, but\nmeans just {@link IShoppingCustomer customer} is appling the deposit charge.\nThe deposit charge be completed only when customer\n{@link IShoppingDepositChargePublish.publish pay} the deposit charge."},{"method":"patch","path":"/shoppings/customers/deposits/charges","name":"shoppings_customers_deposits_charges_patch","parameters":[{"type":"object","properties":{"search":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"minimum":{"type":"number"},"maximum":{"type":"number"},"state":{"type":"string","enum":["pending","published","payed","cancelled"]},"publish":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"payment":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}}}}},"required":["state"]},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-value","-publish.created_at","-publish.paid_at","+value","+publish.created_at","+publish.paid_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"publish":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"paid_at":{"type":"string","format":"date-time","nullable":true},"cancelled_at":{"type":"string","format":"date-time","nullable":true}},"required":["id","created_at","paid_at","cancelled_at"],"nullable":true},"created_at":{"type":"string","format":"date-time"},"value":{"type":"number"}},"required":["id","customer","publish","created_at","value"]},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every deposit charges.\n\nList up every {@link IShoppingDepositCharge deposit charges} of the\n{@link IShoppingCustomer customer} with {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingDepositCharge.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingDepositCharge.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/customers/deposits/charges/{id}","name":"shoppings_customers_deposits_charges_getById","parameters":[{"type":"string","description":" Target deposit charge's {@link IShoppingDepositCharge.id}"}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"publish":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"paid_at":{"type":"string","format":"date-time","nullable":true},"cancelled_at":{"type":"string","format":"date-time","nullable":true}},"required":["id","created_at","paid_at","cancelled_at"],"nullable":true},"created_at":{"type":"string","format":"date-time"},"value":{"type":"number"}},"required":["id","customer","publish","created_at","value"]},"description":"Get a deposit charge info.\n\nGet a {@link IShoppingDepositCharge deposit charge} information."},{"method":"put","path":"/shoppings/customers/deposits/charges/{id}","name":"shoppings_customers_deposits_charges_putById","parameters":[{"type":"string","description":" Target deposit charge's {@link IShoppingDepositCharge.id}"},{"type":"object","properties":{"value":{"type":"number"}},"required":["value"]}],"description":"Update a deposit charge application.\n\nUpdate value of a {@link IShoppingDepositCharge deposit charge application}\nthat has been applied by the {@link IShoppingCustomer}.\n\nIf the charge has been {@link IShoppingDepositChargePublish published},\nthen it is not possible to update the deposit charge. Only 410 gone exception\nwould be thrown."},{"method":"delete","path":"/shoppings/customers/deposits/charges/{id}","name":"shoppings_customers_deposits_charges_eraseById","parameters":[{"type":"string","description":" Target deposit charge's {@link IShoppingDepositCharge.id}"}],"description":"Erase a deposit charge application.\n\nErase a {@link IShoppingDepositCharge deposit charge application} that has been\napplied by the {@link IShoppingCustomer}.\n\nIf the charge has been {@link IShoppingDepositChargePublish published}, then\nit is not possible to erase the deposit charge. In that case, you've to cancel\nthe payment by calling the {@link publish.cancel} function."},{"method":"get","path":"/shoppings/customers/deposits/charges/{chargeId}/publish/able","name":"shoppings_customers_deposits_charges_publish_able_getByChargeid","parameters":[{"type":"string","format":"uuid","description":" Target charge's {@link IShoppingDepositCharge.id }"}],"output":{"type":"boolean"},"description":"Check publishable.\n\nTest whether the {@link IShoppingDepositCharge charge} is publishable or not.\n\nIf the charge has not been {@link IShoppingDepositChargePublish published} and\nnot deleted yet, then it is possible to publish the charge"},{"method":"post","path":"/shoppings/customers/deposits/charges/{chargeId}/publish","name":"shoppings_customers_deposits_charges_publish_postByChargeid","parameters":[{"type":"string","format":"uuid","description":" Target charge's {@link IShoppingDepositCharge.id }"},{"type":"object","properties":{"vendor":{"type":"string"},"uid":{"type":"string"}},"required":["vendor","uid"]}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"paid_at":{"type":"string","format":"date-time","nullable":true},"cancelled_at":{"type":"string","format":"date-time","nullable":true}},"required":["id","created_at","paid_at","cancelled_at"]},"description":"Publish a charge.\n\n{@link IShoppingDepositChargePublish Publish} a\n{@link IShoppingDepositCharge charge} that has been applied by the\n{@link IShoppingCustomer} with payment information gotten from the\npayment vendor system.\n\nAlso, the payment time can be different with the publish time. For example,\nif the payment method is manual bank account transfer, then the payment\nwould be delayed until the customer actually transfer the money. In that\ncase, {@link IShoppingDepositChargePublish.paid_at} would be `null` value,\nso that you have to check it after calling this publish function."},{"method":"patch","path":"/shoppings/customers/deposits/histories","name":"shoppings_customers_deposits_histories_patch","parameters":[{"type":"object","properties":{"search":{"type":"object","properties":{"deposit":{"type":"object","properties":{"source":{"type":"string"},"code":{"type":"string"},"direction":{"type":"number","enum":[-1,1]}}},"citizen_id":{"type":"string","format":"uuid"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"minimum":{"type":"number","minimum":0},"maximum":{"type":"number","minimum":0}}},"sort":{"type":"array","items":{"type":"string","enum":["-deposit.source","-deposit.code","-deposit.direction","+deposit.source","+deposit.code","+deposit.direction","-history.value","-history.created_at","+history.value","+history.created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"deposit":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","created_at","code","source","direction"]},"source_id":{"type":"string","format":"uuid"},"value":{"type":"number"},"balance":{"type":"number"},"created_at":{"type":"string","format":"date-time"}},"required":["id","citizen","deposit","source_id","value","balance","created_at"]},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every deposit histories.\n\nList up every {@link IShoppingDepositHistory deposit histories} of the\n{@link IShoppingCustomer customer} with {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingDepositHistory.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingDepositHistory.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/customers/deposits/histories/{id}","name":"shoppings_customers_deposits_histories_getById","parameters":[{"type":"string","format":"uuid"}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"deposit":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","created_at","code","source","direction"]},"source_id":{"type":"string","format":"uuid"},"value":{"type":"number"},"balance":{"type":"number"},"created_at":{"type":"string","format":"date-time"}},"required":["id","citizen","deposit","source_id","value","balance","created_at"]},"description":"Get a deposit history info.\n\nGet a {@link IShoppingDepositHistory deposit history} information."},{"method":"get","path":"/shoppings/customers/deposits/histories/balance","name":"shoppings_customers_deposits_histories_balance_get","parameters":[],"output":{"type":"number"},"description":"Get balance of the deposit.\n\nGet current balance of the deposit of the {@link IShoppingCustomer customer}."},{"method":"patch","path":"/shoppings/customers/mileages/histories","name":"shoppings_customers_mileages_histories_patch","parameters":[{"type":"object","properties":{"search":{"type":"object","properties":{"mileage":{"type":"object","properties":{"source":{"type":"string"},"code":{"type":"string"},"direction":{"type":"number","enum":[-1,1]}}},"citizen_id":{"type":"string","format":"uuid"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"minimum":{"type":"number","minimum":0},"maximum":{"type":"number","minimum":0}}},"sort":{"type":"array","items":{"type":"string","enum":["-mileage.source","-mileage.code","-mileage.direction","+mileage.source","+mileage.code","+mileage.direction","-history.value","-history.created_at","+history.value","+history.created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}}}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"mileage":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"value":{"type":"number","nullable":true},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","value","created_at","code","source","direction"]},"source_id":{"type":"string","format":"uuid"},"value":{"type":"number"},"balance":{"type":"number"},"created_at":{"type":"string","format":"date-time"}},"required":["id","citizen","mileage","source_id","value","balance","created_at"]},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every mileage histories.\n\nList up every {@link IShoppingMileageHistory mileage histories} of the\n{@link IShoppingCustomer customer} with {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingMileageHistory.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingMileageHistory.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/customers/mileages/histories/{id}","name":"shoppings_customers_mileages_histories_getById","parameters":[{"type":"string","format":"uuid","description":" Target mileage history's {@link IShoppingMileageHistory.id}"}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"mileage":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"value":{"type":"number","nullable":true},"created_at":{"type":"string","format":"date-time"},"code":{"type":"string"},"source":{"type":"string"},"direction":{"type":"number","enum":[1,-1]}},"required":["id","value","created_at","code","source","direction"]},"source_id":{"type":"string","format":"uuid"},"value":{"type":"number"},"balance":{"type":"number"},"created_at":{"type":"string","format":"date-time"}},"required":["id","citizen","mileage","source_id","value","balance","created_at"]},"description":"Get a mileage history info.\n\nGet a {@link IShoppingMileageHistory mileage history} information."},{"method":"get","path":"/shoppings/customers/mileages/histories/balance","name":"shoppings_customers_mileages_histories_balance_get","parameters":[],"output":{"type":"number"},"description":"Get balance of the mileage.\n\nGet current balance of the mileage of the {@link IShoppingCustomer customer}."},{"method":"put","path":"/shoppings/customers/carts/{cartId}/commodities/{id}","name":"shoppings_customers_carts_commodities_putByCartidAndId","parameters":[{"type":"string","format":"uuid","nullable":true,"description":" Belonged cart's ID"},{"type":"string","format":"uuid","description":" Target commodity's {@link IShoppingCartCommodity.id}"},{"type":"object","properties":{"volume":{"type":"integer","minimum":1,"title":"Volume of the commodity to purchase","description":"Volume of the commodity to purchase.\n\nA value indicating how many sets would be multiplied to the children\n{@link IShoppingSaleUnitStock.IInvert.quantity} values."}},"required":["volume"],"description":"Update information of a shopping cart commodity."}],"description":"Update a commodity (volume).\n\nUpdate a {@link IShoppingCartCommodity commodity}'s volume in the\nshopping cart.\n\nIf the *cartId* is different with the belonged cart's ID, then 404 not\nfound exception would be thrown. Otherwise, the *cartId* has `null` value,\nsuch dependency checking would be skipped, but still ownership would be\nvalidated.\n\nAlso, if target {@link IShoppingSale sale} has been suspended or\n{@link IShoppingSaleUnitStockInventory out of stock} suddenly, then 410\ngone error would be thrown, either."},{"method":"delete","path":"/shoppings/customers/carts/{cartId}/commodities/{id}","name":"shoppings_customers_carts_commodities_eraseByCartidAndId","parameters":[{"type":"string","format":"uuid","nullable":true,"description":" Belonged cart's ID"},{"type":"string","format":"uuid","description":" Target commodity's {@link IShoppingCartCommodity.id}"}],"description":"Erase a commodity.\n\nErase a {@link IShoppingCartCommodity commodity} from the shopping cart.\n\nIf the commodity is on an {@link IShoppingOrder order} process, it is not\npossible to erase it. Instead, if the order has been\n{@link IShoppingOrderPublish published}, then it would not be appread in\nthe shopping cart more. If the order be erased, then you also can continue\nerasinng the commodity, neither."},{"method":"get","path":"/shoppings/customers/carts/{cartId}/commodities/{id}/replica","name":"shoppings_customers_carts_commodities_replica_getByCartidAndId","parameters":[{"type":"string","format":"uuid","nullable":true,"description":" Belonged cart's ID"},{"type":"string","format":"uuid","description":" Target commodity's {@link IShoppingCartCommodity.id}"}],"output":{"type":"object","properties":{"sale_id":{"type":"string","format":"uuid","title":"Target sale's {@link IShoppingSale.id}","description":"Target sale's {@link IShoppingSale.id}."},"stocks":{"type":"array","items":{"type":"object","properties":{"unit_id":{"type":"string","format":"uuid","title":"Target unit's {@link IShoppingSaleUnit.id}","description":"Target unit's {@link IShoppingSaleUnit.id}."},"stock_id":{"type":"string","format":"uuid","title":"Target stock's {@link IShoppingSaleUnitStock.id}","description":"Target stock's {@link IShoppingSaleUnitStock.id}.\n\nIt must be matched with the {@link choices} property."},"choices":{"type":"array","items":{"type":"object","properties":{"option_id":{"type":"string","format":"uuid","title":"Target option's {@link IShoppingSaleUnitOption.id}","description":"Target option's {@link IShoppingSaleUnitOption.id}."},"candidate_id":{"type":"string","format":"uuid","nullable":true,"title":"Target candidate's {@link IShoppingSaleUnitOptionCandidate.id}","description":"Target candidate's {@link IShoppingSaleUnitOptionCandidate.id}.\n\nWhen target option's type is `select`, then this attribute is not\n`null` but has a value."},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}],"title":"Written value about the option","description":"Written value about the option.\n\nWhen target option's type is not `select`, but an atomic type value\nlike `boolean`, `number` or `string`, then this attribute is not\n`null` but has the matched atomic value."}},"required":["option_id","candidate_id","value"],"description":"Creation information of the choice for each option.\n\nWhen record being created, its corresponding structure would be\n{@link IShoppingSaleUnitStockChoice.IInvert}."},"title":"Creation information of the choices for each option","description":"Creation information of the choices for each option."},"quantity":{"type":"integer","minimum":1,"title":"Quantity of the stock to purchase","description":"Quantity of the stock to purchase.\n\nThis value is multiplied by the {@link IShoppingCartCommodity.volume}."}},"required":["unit_id","stock_id","choices","quantity"],"description":"Creation information of the commodity stock of shopping cart.\n\nWhen record being created, its corresponding structure would be\n{@link IShoppingSaleSnapshotUnit.IInvert} and\n{@link IShoppingSaleSnapshotUnitStock.IInvert}."},"minItems":1,"title":"List of the stocks to be purchased","description":"List of the stocks to be purchased."},"volume":{"type":"integer","minimum":1,"title":"Volume of the commodity to purchase","description":"Volume of the commodity to purchase.\n\nA value indicating how many sets would be multiplied to the children\n{@link IShoppingSaleUnitStock.IInvert.quantity} values."},"accumulate":{"type":"boolean","title":"Whether to accumulate the volume or not","description":"Whether to accumulate the volume or not.\n\nIf this attribute is not `false` and there's same commodity that\ncomposed with same stocks and options, then the volume will be\naccumulated to the existed one.\n\nOtherwise, duplicated commodity would be newly created."}},"required":["sale_id","stocks","volume"],"description":"Creation information of a shopping cart commodity."},"description":"Get replica of a commodity.\n\nGet a {@link IShoppingCartCommodity.ICreate} typed info of the target\ncommodity for replication.\n\nBy the way, if the *cartId* is different with the belonged cart's ID,\nthen 404 not found exception would be thrown. Otherwise, the *cartId*\nhas `null` value, such dependency checking would be skipped, but still\nownership would be validated.\n\nAlso, if target {@link IShoppingSale sale} has been suspended or\n{@link IShoppingSaleUnitStockInventory out of stock} suddenly,\nthen 410 gone error would be thrown, either."},{"method":"delete","path":"/shoppings/customers/orders/{id}","name":"shoppings_customers_orders_eraseById","parameters":[{"type":"string","format":"uuid","description":" Target order's {@link IShoppingOrder.id}"}],"description":"Erase an order application.\n\nErase an order application that has been applied by the\n{@link IShoppingCustomer}.\n\nIf the order has been {@link IShoppingOrderPublish published}, then it is\nnot possible to erase the order. In that case, you've to cancel the\npayment by calling the {@link publish.cancel} function."},{"method":"put","path":"/shoppings/customers/orders/{orderId}/goods/{id}/confirm","name":"shoppings_customers_orders_goods_confirm_putByOrderidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged order's {@link IShoppingOrder.id }"},{"type":"string","format":"uuid","description":" Target good's {@link IShoppingOrderGood.id }"}],"description":"Confirm an order good.\n\nConfirm an {@link IShoppingOrderGood order good} that has been\ncompleted {@link IShoppingDelivery delivering} to the\n{@link IShoppingCustomer customer}.\n\nIn other words, belonged {@link IShoppingOrder order} must be\n{@link IShoppingPublish.paid_at published, paid} and delivery of\nthe good must be {@link IShoppingDeliveryJourney arrived} to the\ncustomer. If not, 428 unprocessable entity error would be thrown."},{"method":"get","path":"/shoppings/customers/orders/{orderId}/publish/able","name":"shoppings_customers_orders_publish_able_getByOrderid","parameters":[{"type":"string","format":"uuid","description":" Target order's {@link IShoppingOrder.id }"}],"output":{"type":"boolean"},"description":"Check publishable.\n\nTest whether the {@link IShoppingOrder order} is publishable or not.\n\nIf the order has not been {@link IShoppingOrderPublish published} and\nnot deleted yet, then it is possible to publish the order. Even thouogh\ntarget {@link IShoppingSale sale} is suspended or\n{@link IShoppingSaleUnitStockInventory out of stock}, it is still possible\nto publish because the order already has been applied."},{"method":"post","path":"/shoppings/customers/orders/{orderId}/publish","name":"shoppings_customers_orders_publish_postByOrderid","parameters":[{"type":"string","format":"uuid","description":" Target order's {@link IShoppingOrder.id }"},{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["cash"]},"address":{"type":"object","properties":{"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number to contact","description":"Mobile number to contact."},"name":{"type":"string","title":"Representative name of the address","description":"Representative name of the address.\n\nSometimes be receiver's name, and sometimes be place name."},"country":{"type":"string","title":"Country name","description":"Country name."},"province":{"type":"string","title":"Province name","description":"Province name."},"city":{"type":"string","title":"City name","description":"City name."},"department":{"type":"string","title":"Department name","description":"Department name."},"possession":{"type":"string","title":"Detailed address containing street name, building number, and room number","description":"Detailed address containing street name, building number, and room number."},"zip_code":{"type":"string","title":"Zip code, or postal code","description":"Zip code, or postal code."},"special_note":{"type":"string","nullable":true,"title":"Special description if required","description":"Special description if required."}},"required":["mobile","name","country","province","city","department","possession","zip_code","special_note"]},"vendor":{"type":"string"},"uid":{"type":"string"}},"required":["type","address","vendor","uid"]},{"type":"object","properties":{"type":{"type":"string","enum":["zero"]},"address":{"type":"object","properties":{"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number to contact","description":"Mobile number to contact."},"name":{"type":"string","title":"Representative name of the address","description":"Representative name of the address.\n\nSometimes be receiver's name, and sometimes be place name."},"country":{"type":"string","title":"Country name","description":"Country name."},"province":{"type":"string","title":"Province name","description":"Province name."},"city":{"type":"string","title":"City name","description":"City name."},"department":{"type":"string","title":"Department name","description":"Department name."},"possession":{"type":"string","title":"Detailed address containing street name, building number, and room number","description":"Detailed address containing street name, building number, and room number."},"zip_code":{"type":"string","title":"Zip code, or postal code","description":"Zip code, or postal code."},"special_note":{"type":"string","nullable":true,"title":"Special description if required","description":"Special description if required."}},"required":["mobile","name","country","province","city","department","possession","zip_code","special_note"]}},"required":["type","address"]}],"description":"Creation info of the publish"}],"output":{"type":"object","properties":{"deliveries":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"journeys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the record","description":"Creation time of the record."},"deleted_at":{"type":"string","format":"date-time","nullable":true,"title":"Deletion time of the record","description":"Deletion time of the record."},"type":{"type":"string","enum":["preparing","manufacturing","shipping","delivering"]},"title":{"type":"string","nullable":true,"title":"Title of journey","description":"Title of journey."},"description":{"type":"string","nullable":true,"title":"Description of journey","description":"Description of journey."},"started_at":{"type":"string","format":"date-time","nullable":true,"title":"Start time of the journey","description":"Start time of the journey."},"completed_at":{"type":"string","format":"date-time","nullable":true,"title":"Completion time of the journey","description":"Completion time of the journey."}},"required":["id","created_at","deleted_at","type","title","description","started_at","completed_at"],"description":"Journey of delivery.\n\n`IShoppingDeliveryJourney` is a subsidiary entity of {@link IShoppingDelivery},\ndescribing each journey of the delivery. For reference, the word journey\nmeans each step of the delivery process, such as preparing, shipping, and\ndelivering {@link IShoppingOrderGood goods} to the\n{@link IShoppingCustomer customer}."},"title":"List of journeys of the delivery","description":"List of journeys of the delivery."},"pieces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"publish_id":{"type":"string","format":"uuid","title":"Target order's {@link IShoppingOrderPublish.id}","description":"Target order's {@link IShoppingOrderPublish.id}."},"good_id":{"type":"string","format":"uuid","title":"Target good's {@link IShoppingOrderGood.id}","description":"Target good's {@link IShoppingOrderGood.id}."},"stock_id":{"type":"string","format":"uuid","title":"Target stock's {@link IShoppingSaleUnitStock.id}","description":"Target stock's {@link IShoppingSaleUnitStock.id}."},"quantity":{"type":"number","minimum":0,"title":"Quantity of the stock","description":"Quantity of the stock.\n\nIt can be precision value to express splitted shipping."}},"required":["id","publish_id","good_id","stock_id","quantity"],"description":"Which stocks are delivered.\n\n`IShoppingDeliveryPiece` is a subsidiary entity of {@link IShoppingDelivery},\ndescribing how much quantity is delivered for each\n{@link IShoppingSaleUnitStock stock} in {@link IShoppingOrder}.\n\nFor reference, as an order can be delivered in multiple times due to volume\nor weight problem, it is possible to have multiple `IShoppingDeliveryPiece`\nrecords for a single stock."},"minItems":1,"title":"List of pieces of the delivery","description":"List of pieces of the delivery."},"shippers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"company":{"type":"string","nullable":true},"name":{"type":"string"},"mobile":{"type":"string"}},"required":["id","created_at","company","name","mobile"]},"title":"List of shippers of the delivery","description":"List of shippers of the delivery."},"state":{"type":"string","enum":["none","underway","preparing","manufacturing","shipping","delivering","arrived"],"description":"State of delivery\n\n- `none`: No delivery or journey record\n- `underway`: Some pieces are over preparing, but others are not\n- `preparing`: At least preparing\n- `manufacturing`: At least manufacturing\n- `shipping`: At least shipping\n- `delivering`: At least delivering\n- `arrived`: Every pieces are arrived"},"created_at":{"type":"string","format":"date-time","title":"Creation time of the record","description":"Creation time of the record."}},"required":["id","seller","journeys","pieces","shippers","state","created_at"],"description":"Delivery information.\n\nWhen delivering {@link IShoppingOrderGood goods} to\n{@link IShoppingCustomer customer}, {@link IShoppingSeller seller} can deliver\nmultiple {@link IShoppingSaleUnitStock stocks}, goods at once. Also, it is\npossible to deliver a stock or good in multiple times due to physical restriction\nlike volume or weight problem.\n\nAs you can see from above, the relationship between delivery with\n{@link IShoppingOrder order} (or {@link IShoppingOrderGood good}) is not 1: 1 or\nN: 1, but M: N. Entity `IShoppingDelivery` has been designed to represent such\nrelationship, by referencing target stocks or goods through subsidiary entity\n{@link IShoppingDeliveryPiece}.\n\nAlso, delivery does not end with only one step. It has multiple processes like\nmanufacturing, planning, shipping and delivering. Those steps are represented by\nanother subsidiary entity {@link IShoppingDeliveryJourney}."},"title":"List of deliveries","description":"List of deliveries.\n\nAn {@link IShoppingOrder order} can be delivered in multiple times.\nOf course, the opposite case is also possible, that a\n{@link IShoppingDelivery delivery} can be composed of multiple orders."},"state":{"type":"string","enum":["none","underway","preparing","manufacturing","shipping","delivering","arrived"],"description":"State of delivery\n\n- `none`: No delivery or journey record\n- `underway`: Some pieces are over preparing, but others are not\n- `preparing`: At least preparing\n- `manufacturing`: At least manufacturing\n- `shipping`: At least shipping\n- `delivering`: At least delivering\n- `arrived`: Every pieces are arrived"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the record","description":"Creation time of the record."},"paid_at":{"type":"string","format":"date-time","nullable":true,"title":"Time when the order was paid","description":"Time when the order was paid."},"cancelled_at":{"type":"string","format":"date-time","nullable":true,"title":"Time when the payment was cancelled","description":"Time when the payment was cancelled."},"address":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number to contact","description":"Mobile number to contact."},"name":{"type":"string","title":"Representative name of the address","description":"Representative name of the address.\n\nSometimes be receiver's name, and sometimes be place name."},"country":{"type":"string","title":"Country name","description":"Country name."},"province":{"type":"string","title":"Province name","description":"Province name."},"city":{"type":"string","title":"City name","description":"City name."},"department":{"type":"string","title":"Department name","description":"Department name."},"possession":{"type":"string","title":"Detailed address containing street name, building number, and room number","description":"Detailed address containing street name, building number, and room number."},"zip_code":{"type":"string","title":"Zip code, or postal code","description":"Zip code, or postal code."},"special_note":{"type":"string","nullable":true,"title":"Special description if required","description":"Special description if required."}},"required":["id","created_at","mobile","name","country","province","city","department","possession","zip_code","special_note"],"description":"The address information."}},"required":["deliveries","state","id","created_at","paid_at","cancelled_at","address"],"description":"Order completion and payment information.\n\n`IShoppingOrderPublish` is an entity that embodies the series of processes\nin which a {@link IShoppingCustomer customer} pays for his or her\n{@link IShoppingOrder order}, thereby completing the order. And only after\nthe order is {@link paid_at completed}, can the {@link IShoppingSeller seller}\nrecognize that the customer has purchased his product.\n\nBy the way, please note that just because the `IShoppingOrderPublish` record\nexists, it does not mean that the payment has been completed. Of course, with\n\"credit cards\" and \"Google Pay\", payment application and payment occur at the\nsame time. However, there are some cases where payment is made after the\npayment application, such as \"bank transfer\" or \"virtual account payment\".\nTherefore, to see the completion of payment, be sure to check the\n{@link paid_at} property.\n\nIn addition, even after payment has been made, there may be cases where it is\nsuddenly cancelled, so please be aware of this as well."},"description":"Publish an order.\n\n{@link IShoppingOrderPublish Publish} an {@link IShoppingOrder order} that\nhas been applied by the {@link IShoppingCustomer} with\n{@link IShoppingAddress address} to delivery and payment information gotten\nfrom the payment vendor system.\n\nIf the order has been discounted for entire order price, then no need\nto send payment vendor info. Instead, only address info is required.\n\nAlso, the payment time can be different with the publish time. For example,\nif the payment method is manual bank account transfer, then the payment\nwould be delayed until the customer actually transfer the money. In that\ncase, {@link IShoppingOrderPublish.paid_at} would be `null` value, so\nthat you have to check it after calling this publish function."},{"method":"delete","path":"/shoppings/customers/orders/{orderId}/publish","name":"shoppings_customers_orders_publish_eraseByOrderid","parameters":[{"type":"string","format":"uuid","description":" Target order's {@link IShoppingOrder.id }"}],"description":"Cancel the publish (payment).\n\nCancel payment of an {@link IShoppingOrder order} that has been\n{@link IShoppingOrderPublish published}.\n\nIf target publish's payment method is manual bank account transfer,\nthen it would be cancelled directly. If not, then payment cancel\nrequest would be sent to the payment vendor system."},{"method":"post","path":"/shoppings/customers/sales/{saleId}/questions/{inquiryId}/comments","name":"shoppings_customers_sales_questions_comments_postBySaleidAndInquiryid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Target inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales."},{"method":"patch","path":"/shoppings/customers/sales/{saleId}/questions/{inquiryId}/comments","name":"shoppings_customers_sales_questions_comments_patchBySaleidAndInquiryid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"body":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the comments with pagination and searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales."},{"method":"get","path":"/shoppings/customers/sales/{saleId}/questions/{inquiryId}/comments/{id}","name":"shoppings_customers_sales_questions_comments_getBySaleidAndInquiryidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales."},{"method":"put","path":"/shoppings/customers/sales/{saleId}/questions/{inquiryId}/comments/{id}","name":"shoppings_customers_sales_questions_comments_putBySaleidAndInquiryidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"},{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot content of the comment."},"description":"Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence."},{"method":"post","path":"/shoppings/customers/sales/{saleId}/questions","name":"shoppings_customers_sales_questions_postBySaleid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["secret","format","title","body","files"],"description":"Creation information of the question."}],"output":{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"type":{"type":"string","enum":["question"],"title":"Type of the derived inquiry","description":"Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion}\n- `review`: {@link IShoppingSaleReview}"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["seller","id","snapshots","created_at"],"description":"Formal answer for the inquiry by the seller.","nullable":true,"title":"Formal answer for the inquiry by the seller"},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["secret","type","customer","answer","read_by_seller","id","snapshots","created_at"],"description":"Question about sale snapshot.\n\n`IShoppingSaleQuestion` is a subtype entity of {@link IShoppingSaleInquiry},\nand is used when a {@link IShoppingCustomer customer} wants to ask something\nabout a {@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at\nthe time) registered by the {@link IShoppingSeller seller}.\n\nAnd, like most shopping malls, `IShoppingSaleQuestion` also provides\na {@link secret} attribute, allowing you to create a \"secret message\" that can\nonly be viewed by the seller and the customer who wrote the question."},"description":"Write a question article.\n\nWhen a {@link IShoppingCustomer customer} wants to ask something about\na specific {@link IShoppingSale sale}, he/she can ask it by writing a\nnew {@link IShoppingSaleQuestion question article}.\n\nIf the customer does not want to reveal his/her identify and question,\nhe/she can write the question as a secret article. In that case, only\nthe customer and the related {@link IShoppingSeller seller} can see\nthe {@link at detailed content}. Also, such secret question's title and\nwriter name would be masked with `*` characters in the\n{@link index pagiation API}."},{"method":"patch","path":"/shoppings/customers/sales/{saleId}/questions","name":"shoppings_customers_sales_questions_patchBySaleid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["seller","id","title","created_at","updated_at"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["secret","customer","answer","read_by_seller","id","title","created_at","updated_at"],"description":"Summarized information of the question."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every summarized questions.\n\nList up every {@link IShoppingSaleQuestion.ISummary summarized questions} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned questions are summarized, not detailed. If you want\nto get the detailed information of a question, use {@link adridges} function\nor {@link at} function for each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.ISummary.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.ISummary.secret} with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/customers/sales/{saleId}/questions/{id}","name":"shoppings_customers_sales_questions_getBySaleidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Target question's {@link IShoppingSaleQuestion.id}"}],"output":{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"type":{"type":"string","enum":["question"],"title":"Type of the derived inquiry","description":"Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion}\n- `review`: {@link IShoppingSaleReview}"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["seller","id","snapshots","created_at"],"description":"Formal answer for the inquiry by the seller.","nullable":true,"title":"Formal answer for the inquiry by the seller"},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["secret","type","customer","answer","read_by_seller","id","snapshots","created_at"],"description":"Question about sale snapshot.\n\n`IShoppingSaleQuestion` is a subtype entity of {@link IShoppingSaleInquiry},\nand is used when a {@link IShoppingCustomer customer} wants to ask something\nabout a {@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at\nthe time) registered by the {@link IShoppingSeller seller}.\n\nAnd, like most shopping malls, `IShoppingSaleQuestion` also provides\na {@link secret} attribute, allowing you to create a \"secret message\" that can\nonly be viewed by the seller and the customer who wrote the question."},"description":"Get a question info.\n\nGet a detailed {@link IShoppingSaleQuestion question} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s question. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nquestions of the sales except the {@link IShoppingSaleQuestion.secret}\nvalue is `false`."},{"method":"post","path":"/shoppings/customers/sales/{saleId}/questions/{id}","name":"shoppings_customers_sales_questions_postBySaleidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Target question's {@link IShoppingSaleQuestion.id}"},{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","title","body","files"],"description":"Creation information of the article."}],"output":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"description":"Update a question.\n\nUpdate a {@link IShoppingSaleQuestion question}'s content.\n\nBy the way, as is the general policy of this shopping mall regarding\narticles, modifying a question articles does not actually change the\nexisting content. Modified content is accumulated and recorded in the\nexisting article record as a new\n{@link IShoppingSaleQuestion.ISnapshot snapshot}. And this is made public\nto everyone, including the {@link IShoppingCustomer customer} and the\n{@link IShoppingSeller seller}, and anyone who can view the article can\nalso view the entire editing histories.\n\nThis is to prevent customers or sellers from modifying their articles and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence."},{"method":"patch","path":"/shoppings/customers/sales/{saleId}/questions/abridges","name":"shoppings_customers_sales_questions_abridges_patchBySaleid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["seller","id","title","created_at","updated_at","format","body","files"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["secret","customer","answer","read_by_seller","id","title","created_at","updated_at","format","body","files"],"description":"Abridged information of the question."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every abridged questions.\n\nList up every {@link IShoppingSaleQuestion.IAbridge abridged questions} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned questions are abridged, not detailed. If you want\nto get the detailed information of a question, use {@link at} function\nfor each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.IAridge.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.IAridge.secret} with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}."},{"method":"post","path":"/shoppings/customers/sales/{saleId}/reviews/{inquiryId}/comments","name":"shoppings_customers_sales_reviews_comments_postBySaleidAndInquiryid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Target inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales."},{"method":"patch","path":"/shoppings/customers/sales/{saleId}/reviews/{inquiryId}/comments","name":"shoppings_customers_sales_reviews_comments_patchBySaleidAndInquiryid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"body":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the comments with pagination and searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales."},{"method":"get","path":"/shoppings/customers/sales/{saleId}/reviews/{inquiryId}/comments/{id}","name":"shoppings_customers_sales_reviews_comments_getBySaleidAndInquiryidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales."},{"method":"put","path":"/shoppings/customers/sales/{saleId}/reviews/{inquiryId}/comments/{id}","name":"shoppings_customers_sales_reviews_comments_putBySaleidAndInquiryidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"},{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot content of the comment."},"description":"Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence."},{"method":"post","path":"/shoppings/customers/sales/{saleId}/reviews","name":"shoppings_customers_sales_reviews_postBySaleid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"object","properties":{"good_id":{"type":"string","format":"uuid","title":"Target good's {@link IShoppingOrderGood.id}","description":"Target good's {@link IShoppingOrderGood.id}."},"score":{"type":"number","minimum":0,"maximum":100,"title":"Score of the review","description":"Score of the review."},"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["good_id","score","format","title","body","files"],"description":"Creation information of the review."}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["review"],"title":"Type of the derived inquiry","description":"Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion}\n- `review`: {@link IShoppingSaleReview}"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["seller","id","snapshots","created_at"],"description":"Formal answer for the inquiry by the seller.","nullable":true,"title":"Formal answer for the inquiry by the seller"},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"title":"Score of the review","description":"Score of the review."},"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["score","id","created_at","format","title","body","files"],"description":"Snapshot content of the review article."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["type","customer","answer","read_by_seller","id","snapshots","created_at"],"description":"Reviews for sale snapshots.\n\n`IShoppingSaleReview` is a subtype entity of {@link IShoppingSaleInquiry},\nand is used when a {@link IShoppingCustomer customer} purchases a\n{@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at the time)\nregistered by the {@link IShoppingSeller seller} as a product and leaves a\nreview and rating for it.\n\nFor reference, `IShoppingSaleReview` and\n{@link IShoppingOrderGod shopping_order_goods} have a logarithmic relationship\nof N: 1, but this does not mean that customers can continue to write reviews\nfor the same product indefinitely. Wouldn't there be restrictions, such as\nif you write a review once, you can write an additional review a month later?"},"description":"Write a review article.\n\nWhen a {@link IShoppingCustomer customer} has purchased a specific\n{@link IShoppingSale sale} and get {@link IShoppingDelivery delivered} it,\nhe/she can write a {@link IShoppingSaleReview review} article about the sale.\n\nIf try to write a review article without purchasing or the delivery has not\nbeen completed, 428 unprocessable entity error would be thrown. Also, the\ncustomer can write multiple review articles per an order, but the next\narticle can be written after 2 weeks from the previous article. If not,\n428 unprocessable entity error would be thrown, either."},{"method":"patch","path":"/shoppings/customers/sales/{saleId}/reviews","name":"shoppings_customers_sales_reviews_patchBySaleid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"minimum":{"type":"number","minimum":0,"maximum":100},"maximum":{"type":"number","minimum":0,"maximum":100}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at","-score","+score"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number","title":"Score of the review","description":"Score of the review."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["seller","id","title","created_at","updated_at"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["score","customer","answer","read_by_seller","id","title","created_at","updated_at"],"description":"Summarized information of the review."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every summarized reviews.\n\nList up every {@link IShoppingSaleReview.ISummary summarized reviews} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned reviews are summarized, not detailed. If you want\nto get the detailed information of a review, use {@link adridges} function\nor {@link at} function for each article.\n\nAlso, returned review has {@link IShoppingSaleReview.ISummary.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/customers/sales/{saleId}/reviews/{id}","name":"shoppings_customers_sales_reviews_getBySaleidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Target review's {@link IShoppingSaleReview.id}"}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["review"],"title":"Type of the derived inquiry","description":"Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion}\n- `review`: {@link IShoppingSaleReview}"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["seller","id","snapshots","created_at"],"description":"Formal answer for the inquiry by the seller.","nullable":true,"title":"Formal answer for the inquiry by the seller"},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"title":"Score of the review","description":"Score of the review."},"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["score","id","created_at","format","title","body","files"],"description":"Snapshot content of the review article."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["type","customer","answer","read_by_seller","id","snapshots","created_at"],"description":"Reviews for sale snapshots.\n\n`IShoppingSaleReview` is a subtype entity of {@link IShoppingSaleInquiry},\nand is used when a {@link IShoppingCustomer customer} purchases a\n{@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at the time)\nregistered by the {@link IShoppingSeller seller} as a product and leaves a\nreview and rating for it.\n\nFor reference, `IShoppingSaleReview` and\n{@link IShoppingOrderGod shopping_order_goods} have a logarithmic relationship\nof N: 1, but this does not mean that customers can continue to write reviews\nfor the same product indefinitely. Wouldn't there be restrictions, such as\nif you write a review once, you can write an additional review a month later?"},"description":"Get a review info.\n\nGet a detailed {@link IShoppingSaleReview review} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s review. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nreviews of the sales."},{"method":"post","path":"/shoppings/customers/sales/{saleId}/reviews/{id}","name":"shoppings_customers_sales_reviews_postBySaleidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Target review's {@link IShoppingSaleReview.id}"},{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"title":"Score of the review","description":"Score of the review."},"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["score","format","title","body","files"],"description":"Updating information of the review."}],"output":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"title":"Score of the review","description":"Score of the review."},"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["score","id","created_at","format","title","body","files"],"description":"Snapshot content of the review article."},"description":"Update a review.\n\nUpdadte a {@link IShoppingSaleReview review}'s content and score.\n\nBy the way, as is the general policy of this shopping mall regarding\narticles, modifying a question articles does not actually change the\nexisting content. Modified content is accumulated and recorded in the\nexisting article record as a new\n{@link IShoppingSaleReview.ISnapshot snapshot}. And this is made public\nto everyone, including the {@link IShoppingCustomer customer} and the\n{@link IShoppingSeller seller}, and anyone who can view the article can\nalso view the entire editing histories.\n\nThis is to prevent customers or sellers from modifying their articles and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence."},{"method":"patch","path":"/shoppings/customers/sales/{saleId}/reviews/abridges","name":"shoppings_customers_sales_reviews_abridges_patchBySaleid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"minimum":{"type":"number","minimum":0,"maximum":100},"maximum":{"type":"number","minimum":0,"maximum":100}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at","-score","+score"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"title":"Score of the review","description":"Score of the review."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["seller","id","title","created_at","updated_at","format","body","files"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["score","customer","answer","read_by_seller","id","title","created_at","updated_at","format","body","files"],"description":"Abridged information of the review."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every abridged reviews.\n\nList up every {@link IShoppingSaleReview.IAbridge abridged reviews} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned reviews are abridged, not detailed. If you want\nto get the detailed information of a review, use {@link at} function\nfor each article.\n\nAlso, returned review has {@link IShoppingSaleReview.IAridge.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}."},{"method":"patch","path":"/shoppings/customers/systematic/channels","name":"shoppings_customers_systematic_channels_patch","parameters":[{"type":"object","properties":{"search":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-channel.code","-channel.name","-channel.created_at","+channel.code","+channel.name","+channel.created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the channels with pagination and searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every channels.\n\nList up every {@link IShoppingChannel channels} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingChannel.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingChannel.IRequest.sort sort condition}."},{"method":"patch","path":"/shoppings/customers/systematic/sections","name":"shoppings_customers_systematic_sections_patch","parameters":[{"type":"object","properties":{"search":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-section.code","-section.name","-section.created_at","+section.code","+section.name","+section.created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the sections with pagination and searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","code","name","created_at"],"description":"Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every sections.\n\nList up every {@link IShoppingSection sections} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSection.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingSection.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/customers/systematic/sections/{id}","name":"shoppings_customers_systematic_sections_getById","parameters":[{"type":"string","format":"uuid","description":" Target section's {@link IShoppingSection.id}"}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","code","name","created_at"],"description":"Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future."},"description":"Get a section info.\n\nGet a detailed {@link IShoppingSection section} information."},{"method":"get","path":"/shoppings/customers/systematic/sections/{code}/get","name":"shoppings_customers_systematic_sections_get_getByCode","parameters":[{"type":"string","description":" Target section's {@link IShoppingSection.code}"}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","code","name","created_at"],"description":"Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future."},"description":"Get a section info by its code.\n\nGet a detailed {@link IShoppingSection section} information by its code."},{"method":"get","path":"/shoppings/sellers/authenticate","name":"shoppings_sellers_authenticate_get","parameters":[],"output":{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},"description":"Get seller information.\n\nGet {@link IShoppingSeller.IInvert seller} information of\ncurrent {@link IShoppingCustomer customer}.\n\nIf current {@link IShoppingMember member} is not an seller,\nit throws 403 forbidden exception."},{"method":"post","path":"/shoppings/sellers/authenticate","name":"shoppings_sellers_authenticate_post","parameters":[{"type":"object","properties":{}}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},"description":"Join as an seller.\n\nJoin as an seller with {@link IShoppingSeller.IJoin joining info}.\n\nThis method is allowed only when the {@link IShoppingCustomer customer} already\nhas joined the {@link IShoppingMember membership}. IF not, he (she) must\naccomplish it before. If not, 403 forbidden exception would be thrown."},{"method":"put","path":"/shoppings/sellers/authenticate/login","name":"shoppings_sellers_authenticate_login_put","parameters":[{"type":"object","properties":{"email":{"type":"string","format":"email","title":"Email address of member","description":"Email address of member.\n\nIf the member has multiple email addresses, just use one of them."},"password":{"type":"string","title":"Password of the member account","description":"Password of the member account."}},"required":["email","password"],"description":"Login request info."}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},"description":"Login as an seller.\n\nLogin as an seller with {@link IShoppingSeller.ILogin login info}.\n\nThis method has exactly same effect with\n{@link ShoppingApi.functional.customers.authenticate.login} function, but\nreturned type is a llttle different. The similar function returns\n{@link IShoppingCustomer} type that starting from the customer information, so\nthat you have to access to the seller info through\n`customer.member.seller`. In contrast with that, this method returns\n{@link IShoppingSeller.IInvert} type that starting from the seller\ninfo, so that can access to the customer info through `seller.customer`.\n\nOf course, to use this function, you had to {@link join} as an seller\nbefore. If not, 403 forbidden exception would be thrown,"},{"method":"post","path":"/shoppings/sellers/deliveries","name":"shoppings_sellers_deliveries_post","parameters":[{"type":"object","properties":{"pieces":{"type":"array","items":{"type":"object","properties":{"publish_id":{"type":"string","format":"uuid","title":"Target order's {@link IShoppingOrderPublish.id}","description":"Target order's {@link IShoppingOrderPublish.id}."},"good_id":{"type":"string","format":"uuid","title":"Target good's {@link IShoppingOrderGood.id}","description":"Target good's {@link IShoppingOrderGood.id}."},"stock_id":{"type":"string","format":"uuid","title":"Target stock's {@link IShoppingSaleUnitStock.id}","description":"Target stock's {@link IShoppingSaleUnitStock.id}."},"quantity":{"type":"number","minimum":0,"title":"Quantity of the stock","description":"Quantity of the stock.\n\nIt can be precision value to express splitted shipping."}},"required":["publish_id","good_id","stock_id","quantity"],"description":"Creation information of the delivery piece."},"minItems":1,"title":"List of pieces of the delivery","description":"List of pieces of the delivery."},"journeys":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["preparing","manufacturing","shipping","delivering"],"title":"Type of journey","description":"Type of journey.\n\n- preparing\n- manufacturing\n- shipping\n- delivering"},"title":{"type":"string","nullable":true,"title":"Title of journey","description":"Title of journey."},"description":{"type":"string","nullable":true,"title":"Description of journey","description":"Description of journey."},"started_at":{"type":"string","format":"date-time","nullable":true,"title":"Start time of the journey","description":"Start time of the journey."},"completed_at":{"type":"string","format":"date-time","nullable":true,"title":"Completion time of the journey","description":"Completion time of the journey."}},"required":["type","title","description","started_at","completed_at"],"description":"Creation information of the delivery journey."},"title":"List of journeys of the delivery","description":"List of journeys of the delivery.\n\nThis is initial data, and it is also possible to accumulate journey data\nafter the delivery creation."},"shippers":{"type":"array","items":{"type":"object","properties":{"company":{"type":"string","nullable":true},"name":{"type":"string"},"mobile":{"type":"string"}},"required":["company","name","mobile"]},"title":"List of shippers of the delivery","description":"List of shippers of the delivery."}},"required":["pieces","journeys","shippers"],"description":"Creation information of the delivery."}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"journeys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the record","description":"Creation time of the record."},"deleted_at":{"type":"string","format":"date-time","nullable":true,"title":"Deletion time of the record","description":"Deletion time of the record."},"type":{"type":"string","enum":["preparing","manufacturing","shipping","delivering"]},"title":{"type":"string","nullable":true,"title":"Title of journey","description":"Title of journey."},"description":{"type":"string","nullable":true,"title":"Description of journey","description":"Description of journey."},"started_at":{"type":"string","format":"date-time","nullable":true,"title":"Start time of the journey","description":"Start time of the journey."},"completed_at":{"type":"string","format":"date-time","nullable":true,"title":"Completion time of the journey","description":"Completion time of the journey."}},"required":["id","created_at","deleted_at","type","title","description","started_at","completed_at"],"description":"Journey of delivery.\n\n`IShoppingDeliveryJourney` is a subsidiary entity of {@link IShoppingDelivery},\ndescribing each journey of the delivery. For reference, the word journey\nmeans each step of the delivery process, such as preparing, shipping, and\ndelivering {@link IShoppingOrderGood goods} to the\n{@link IShoppingCustomer customer}."},"title":"List of journeys of the delivery","description":"List of journeys of the delivery."},"pieces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"publish_id":{"type":"string","format":"uuid","title":"Target order's {@link IShoppingOrderPublish.id}","description":"Target order's {@link IShoppingOrderPublish.id}."},"good_id":{"type":"string","format":"uuid","title":"Target good's {@link IShoppingOrderGood.id}","description":"Target good's {@link IShoppingOrderGood.id}."},"stock_id":{"type":"string","format":"uuid","title":"Target stock's {@link IShoppingSaleUnitStock.id}","description":"Target stock's {@link IShoppingSaleUnitStock.id}."},"quantity":{"type":"number","minimum":0,"title":"Quantity of the stock","description":"Quantity of the stock.\n\nIt can be precision value to express splitted shipping."}},"required":["id","publish_id","good_id","stock_id","quantity"],"description":"Which stocks are delivered.\n\n`IShoppingDeliveryPiece` is a subsidiary entity of {@link IShoppingDelivery},\ndescribing how much quantity is delivered for each\n{@link IShoppingSaleUnitStock stock} in {@link IShoppingOrder}.\n\nFor reference, as an order can be delivered in multiple times due to volume\nor weight problem, it is possible to have multiple `IShoppingDeliveryPiece`\nrecords for a single stock."},"minItems":1,"title":"List of pieces of the delivery","description":"List of pieces of the delivery."},"shippers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"company":{"type":"string","nullable":true},"name":{"type":"string"},"mobile":{"type":"string"}},"required":["id","created_at","company","name","mobile"]},"title":"List of shippers of the delivery","description":"List of shippers of the delivery."},"state":{"type":"string","enum":["none","underway","preparing","manufacturing","shipping","delivering","arrived"],"description":"State of delivery\n\n- `none`: No delivery or journey record\n- `underway`: Some pieces are over preparing, but others are not\n- `preparing`: At least preparing\n- `manufacturing`: At least manufacturing\n- `shipping`: At least shipping\n- `delivering`: At least delivering\n- `arrived`: Every pieces are arrived"},"created_at":{"type":"string","format":"date-time","title":"Creation time of the record","description":"Creation time of the record."}},"required":["id","seller","journeys","pieces","shippers","state","created_at"],"description":"Delivery information.\n\nWhen delivering {@link IShoppingOrderGood goods} to\n{@link IShoppingCustomer customer}, {@link IShoppingSeller seller} can deliver\nmultiple {@link IShoppingSaleUnitStock stocks}, goods at once. Also, it is\npossible to deliver a stock or good in multiple times due to physical restriction\nlike volume or weight problem.\n\nAs you can see from above, the relationship between delivery with\n{@link IShoppingOrder order} (or {@link IShoppingOrderGood good}) is not 1: 1 or\nN: 1, but M: N. Entity `IShoppingDelivery` has been designed to represent such\nrelationship, by referencing target stocks or goods through subsidiary entity\n{@link IShoppingDeliveryPiece}.\n\nAlso, delivery does not end with only one step. It has multiple processes like\nmanufacturing, planning, shipping and delivering. Those steps are represented by\nanother subsidiary entity {@link IShoppingDeliveryJourney}."},"description":"Create a delivery.\n\nCreate a {@link IShoppingDelivery delivery} record targetting\n{@link IShoppingOrder orders}, their {@link IShoppingOrderGood goods} and\n{@link IShoppingSaleUnitStock stocks} ({@link IShoppingDeliveryPiece}) with\n{@link IShoppingDeliveryJourney journeys} and\n{@link IShoppingDeliveryShipper shippers} info.\n\nNote that, composition of the {@link IShoppingDeliveryPiece} must not over\nthe required. To identify which pieces are required, recommend to call\nthe {@link incompletes} function with target orders'\n{@link IShoppingOrderPublish.id}s before calling this one."},{"method":"patch","path":"/shoppings/sellers/deliveries/incompletes","name":"shoppings_sellers_deliveries_incompletes_patch","parameters":[{"type":"object","properties":{"publish_ids":{"type":"array","items":{"type":"string","format":"uuid"}}},"required":["publish_ids"]}],"output":{"type":"array","items":{"type":"object","properties":{"publish_id":{"type":"string","format":"uuid","title":"Target order's {@link IShoppingOrderPublish.id}","description":"Target order's {@link IShoppingOrderPublish.id}."},"good_id":{"type":"string","format":"uuid","title":"Target good's {@link IShoppingOrderGood.id}","description":"Target good's {@link IShoppingOrderGood.id}."},"stock_id":{"type":"string","format":"uuid","title":"Target stock's {@link IShoppingSaleUnitStock.id}","description":"Target stock's {@link IShoppingSaleUnitStock.id}."},"quantity":{"type":"number","minimum":0,"title":"Quantity of the stock","description":"Quantity of the stock.\n\nIt can be precision value to express splitted shipping."}},"required":["publish_id","good_id","stock_id","quantity"],"description":"Creation information of the delivery piece."}},"description":"Get list of incomplete pieces.\n\nGet list of {@link IShoppingDeliveryPiece incomplete pieces} of target\norders' {@link IShoppingOrderPublish.id}s.\n\nIf you specify target orders' publish IDs, then this function returns\nincompleted pieces of the orders with computation as an Array of\n{@link IShoppingDeliveryPiece.ICreate} type.\n\nYou can utillize the result to make a huge {@link IShoppingDelivery delivery}\nfor integrated delivering, and also possible to make multiple deliveries for\nsplitted delivering."},{"method":"post","path":"/shoppings/sellers/deliveries/{deliveryId}/journeys","name":"shoppings_sellers_deliveries_journeys_postByDeliveryid","parameters":[{"type":"string","format":"uuid","description":" Belonged delivery's {@link IShoppingDelivery.id }"},{"type":"object","properties":{"type":{"type":"string","enum":["preparing","manufacturing","shipping","delivering"],"title":"Type of journey","description":"Type of journey.\n\n- preparing\n- manufacturing\n- shipping\n- delivering"},"title":{"type":"string","nullable":true,"title":"Title of journey","description":"Title of journey."},"description":{"type":"string","nullable":true,"title":"Description of journey","description":"Description of journey."},"started_at":{"type":"string","format":"date-time","nullable":true,"title":"Start time of the journey","description":"Start time of the journey."},"completed_at":{"type":"string","format":"date-time","nullable":true,"title":"Completion time of the journey","description":"Completion time of the journey."}},"required":["type","title","description","started_at","completed_at"],"description":"Creation information of the delivery journey."}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the record","description":"Creation time of the record."},"deleted_at":{"type":"string","format":"date-time","nullable":true,"title":"Deletion time of the record","description":"Deletion time of the record."},"type":{"type":"string","enum":["preparing","manufacturing","shipping","delivering"]},"title":{"type":"string","nullable":true,"title":"Title of journey","description":"Title of journey."},"description":{"type":"string","nullable":true,"title":"Description of journey","description":"Description of journey."},"started_at":{"type":"string","format":"date-time","nullable":true,"title":"Start time of the journey","description":"Start time of the journey."},"completed_at":{"type":"string","format":"date-time","nullable":true,"title":"Completion time of the journey","description":"Completion time of the journey."}},"required":["id","created_at","deleted_at","type","title","description","started_at","completed_at"],"description":"Journey of delivery.\n\n`IShoppingDeliveryJourney` is a subsidiary entity of {@link IShoppingDelivery},\ndescribing each journey of the delivery. For reference, the word journey\nmeans each step of the delivery process, such as preparing, shipping, and\ndelivering {@link IShoppingOrderGood goods} to the\n{@link IShoppingCustomer customer}."},"description":"Create a new journey.\n\nCreate a new {@link IShoppingDeliveryJourney journey} of the\n{@link IShoppingDelivery delivery}.\n\nThis action may change the related {@link IShoppingOrderGood.state}.\nAlso, if the target journey's type is \"delivering\", whether the property\n{@link IShoppingDeliveryJourney.completed_at} is null or not affects to\nthe related goods' states. If the property is not null, the state becomes\n\"arrived\". Otherwise, the state becomes \"delivering\"."},{"method":"put","path":"/shoppings/sellers/deliveries/{deliveryId}/journeys/{id}/complete","name":"shoppings_sellers_deliveries_journeys_complete_putByDeliveryidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged delivery's {@link IShoppingDelivery.id }"},{"type":"string","format":"uuid","description":" Target journey's {@link IShoppingDeliveryJourney.id}"},{"type":"object","properties":{"completed_at":{"type":"string","format":"date-time","nullable":true,"title":"Completion time of the journey","description":"Completion time of the journey."}},"required":["completed_at"],"description":"Completion information of the delivery journey."}],"description":"Complete a journey.\n\nComplete a {@link IShoppingDeliveryJourney journey} of the\n{@link IShoppingDelivery delivery}. In other words, fills the\n{@link IShoppingDeliveryJourney.completed_at} property with current time.\n\nIf the target journey's type is \"delivering\", this action may change\nthe related {@link IShoppingOrderGood.state goods' states} to be \"arrived\"."},{"method":"delete","path":"/shoppings/sellers/deliveries/{deliveryId}/journeys/{id}","name":"shoppings_sellers_deliveries_journeys_eraseByDeliveryidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged delivery's {@link IShoppingDelivery.id }"},{"type":"string","format":"uuid","description":" Target journey's {@link IShoppingDeliveryJourney.id}"}],"description":"Erase a journey.\n\nErase a {@link IShoppingDeliveryJourney journey} of the\n{@link IShoppingDelivery delivery}.\n\nIf erasing journey is the last one of the belonged delivery, this action\nmay change the related {@link IShoppingOrderGood.state}. By erasing the last\njourney, the state rolls back to the previous."},{"method":"post","path":"/shoppings/sellers/deliveries/{deliveryId}/shippers","name":"shoppings_sellers_deliveries_shippers_postByDeliveryid","parameters":[{"type":"string","format":"uuid","description":" Belonged delivery's {@link IShoppingDelivery.id }"},{"type":"object","properties":{"company":{"type":"string","nullable":true},"name":{"type":"string"},"mobile":{"type":"string"}},"required":["company","name","mobile"]}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"company":{"type":"string","nullable":true},"name":{"type":"string"},"mobile":{"type":"string"}},"required":["id","created_at","company","name","mobile"]},"description":"Create a new shipper.\n\nCreate a new {@link IShoppingDeliveryShipper shipper} of the\n{@link IShoppingDelivery delivery}.\n\nThis action does not affect to the related {@link IShoppingOrder orders} or\n{@link IShoppingOrderGood goods} like {@link IShoppingDeliveryJourney}\nor {@link IShoppingDeliveryPiece} case, but just informs to the\n{@link IShoppingCustomer customer}."},{"method":"delete","path":"/shoppings/sellers/coupons/{id}","name":"shoppings_sellers_coupons_eraseById","parameters":[{"type":"string","description":" Target coupon's {@link IShoppingCoupon.id}"}],"description":"Erase a coupon.\n\nErase a {@link IShoppingCoupon coupon} with given ID.\n\nFor reference, if there're some {@link IShoppingCouponTicket tickets}\nwhich are already issued from the target coupon, they would not be affected.\nThose tickets are still valid until their expration time."},{"method":"put","path":"/shoppings/sellers/sales/{id}/open","name":"shoppings_sellers_sales_open_putById","parameters":[{"type":"string","format":"uuid","description":" Target sale's {@link IShoppingSale.id}"},{"type":"object","properties":{"opened_at":{"type":"string","format":"date-time","nullable":true,"title":"Opening time of the sale","description":"Opening time of the sale."},"closed_at":{"type":"string","format":"date-time","nullable":true,"title":"Closing time of the sale","description":"Closing time of the sale.\n\nIf this value is `null`, the sale be continued forever."}},"required":["opened_at","closed_at"],"description":"Update opening time information of sale."}],"description":"Change opening and closing time of a sale.\n\nUpdate a {@link IShoppingSale sale}'s opening and closing time.\n\nBy the way, if the sale still be opened or closed, it is not possible to\nchange the opening time. In contrary, if the sale already had been opened\nbut still not closed, it is possible to change the closing time.\n\nOf course, if closing time is less than opening time or not,\n428 unprocessable entity error would be thrown."},{"method":"post","path":"/shoppings/sellers/sales/{id}/replica","name":"shoppings_sellers_sales_replica_postById","parameters":[{"type":"string","format":"uuid","description":" Target sale's {@link IShoppingSale.id}"}],"output":{"type":"object","properties":{"section_code":{"type":"string","title":"Belonged section's {@link IShoppingSection.code}","description":"Belonged section's {@link IShoppingSection.code}."},"status":{"type":"string","enum":["paused","suspended"],"nullable":true,"title":"Initial status of the sale","description":"Initial status of the sale.\n\n`null` or `undefined`: No restriction\n`paused`: Starts with {@link ITimestamps.paused_at paused} status\n`suspended`: Starts with {@link ITimestamps.suspended_at suspended} status"},"opened_at":{"type":"string","format":"date-time","nullable":true,"title":"Opening time of the sale","description":"Opening time of the sale."},"closed_at":{"type":"string","format":"date-time","nullable":true,"title":"Closing time of the sale","description":"Closing time of the sale.\n\nIf this value is `null`, the sale be continued forever."},"content":{"type":"object","properties":{"title":{"type":"string"},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string"},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]}},"thumbnails":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]}}},"required":["title","format","body","files","thumbnails"]},"channels":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","title":"Target channel's {@link IShoppingChannel.code}","description":"Target channel's {@link IShoppingChannel.code}."},"category_ids":{"type":"array","items":{"type":"string","format":"uuid"},"title":"List of target categories' {@link IShoppingChannelCategory.id}s","description":"List of target categories' {@link IShoppingChannelCategory.id}s.\n\nIf empty, it means all categories of the channel is listing the sale."}},"required":["code","category_ids"],"description":"Creation information of the target channel (and categories) of sale to sell."}},"units":{"type":"array","items":{"type":"object","properties":{"options":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean"],"title":"Type of descriptive option","description":"Type of descriptive option.\n\nWhich typed value should be written when purchasing."},"name":{"type":"string","title":"Readable name of the option","description":"Readable name of the option."}},"required":["type","name"],"description":"Creation information of the descriptive option."},{"type":"object","properties":{"type":{"type":"string","enum":["select"],"title":"Discriminant for the type of selectable option","description":"Discriminant for the type of selectable option."},"name":{"type":"string","title":"Represents the name of the option","description":"Represents the name of the option."},"variable":{"type":"boolean","title":"Whether the option is variable or not","description":"Whether the option is variable or not.\n\nWhen type of current option is \"select\", this attribute means whether\nselecting different candidate value affects the final stock or not."},"candidates":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","title":"Represents the name of the candidate value","description":"Represents the name of the candidate value."}},"required":["name"],"description":"Creation information of the candidate value."},"minItems":1,"title":"List of candidate values","description":"List of candidate values."}},"required":["type","name","variable","candidates"],"description":"Creation information of the selectable option."}]},"title":"List of options","description":"List of options."},"stocks":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","title":"Representative name of the stock","description":"Representative name of the stock."},"price":{"type":"object","properties":{"nominal":{"type":"number","minimum":0,"title":"Nominal price","description":"Nominal price.\n\nThis is not {@link real real price} to pay, but just a nominal price to show.\nIf this value is greater than the {@link real real price}, it would be shown\nlike {@link IShoppingSeller seller} is giving a discount."},"real":{"type":"number","minimum":0,"title":"Real price to pay","description":"Real price to pay."}},"required":["nominal","real"],"description":"Shopping price interface."},"quantity":{"type":"integer","minimum":1,"title":"Initial inventory quantity","description":"Initial inventory quantity."},"choices":{"type":"array","items":{"type":"object","properties":{"option_index":{"type":"integer","description":"Target option's index number in\n{@link IShoppingSaleUnit.ICreate.options}."},"candidate_index":{"type":"integer","description":"Target candidate's index number in\n{@link IShoppingSaleUnitSelectableOption.ICreate.candidates}."}},"required":["option_index","candidate_index"],"description":"Creation information of stock choice."},"title":"List of choices","description":"List of choices.\n\nWhich candidate values being chosen for each option."}},"required":["name","price","quantity","choices"],"description":"Creation information of the stock."},"minItems":1,"title":"List of final stocks","description":"List of final stocks."},"name":{"type":"string","title":"Representative name of the unit","description":"Representative name of the unit."},"primary":{"type":"boolean","title":"Whether the unit is primary or not","description":"Whether the unit is primary or not.\n\nJust a labeling value."},"required":{"type":"boolean","title":"Whether the unit is required or not","description":"Whether the unit is required or not.\n\nWhen the unit is required, the customer must select the unit. If do not\nselect, customer can't buy it.\n\nFor example, if there's a sale \"Macbook Set\" and one of the unit is the\n\"Main Body\", is it possible to buy the \"Macbook Set\" without the\n\"Main Body\" unit? This property is for that case."}},"required":["options","stocks","name","primary","required"],"description":"Creation information of sale unit."},"minItems":1},"tags":{"type":"array","items":{"type":"string"}}},"required":["section_code","opened_at","closed_at","content","channels","units","tags"],"description":"Creation information of sale."},"description":"Get replica of a sale.\n\nGet a {@link IShoppingSale.ICreate} typed info of the target sale for\nreplication.\n\nIt would be useful for creating a new replication\n{@link IShoppingSale sale} with similar innformatiopn."},{"method":"delete","path":"/shoppings/sellers/sales/{id}/pause","name":"shoppings_sellers_sales_pause_eraseById","parameters":[{"type":"string","format":"uuid","description":" Target sale's {@link IShoppingSale.id}"}],"description":"Pause a sale.\n\nPause a {@link IShoppingSale sale} from {@link open opened} state.\nTherefore, the sale can not be operated again until it be\n{@link restore restored}. By the way, {@link IShoppingCustomer customer}\nstill can sale from the {@link index} and {@link at} API endpints, but\n\"paused\" label would be attached.\n\nAlso, customer no more can put into the shopping cart, either.\nEven the sale already had been put into the shopping cart, the\n{@link IShoppingCartCommodity commodity} will not be listed on the\nshopping cart. Also, it is not possible to appling an\n{@link IShoppingOrder order} with the paused sale's commodity, either.\n\nBy the way, if the sale already had been applied to an order, the order\ncan be {@link IShoppingOrderPublish published} and\n{@link IShoppingSeller seller} must {@link IShoppingDelivery deliver} the\ngood to the customer."},{"method":"delete","path":"/shoppings/sellers/sales/{id}/suspend","name":"shoppings_sellers_sales_suspend_eraseById","parameters":[{"type":"string","format":"uuid","description":" Target sale's {@link IShoppingSale.id}"}],"description":"Suspend a sale.\n\nSuspend a {@link IShoppingSale sale} from {@link open opened} state.\nTherefore, the sale can not be operated again until it be\n{@link restore restored} and {@link IShoppingCustomer customer} cannot\nsee the sale from the {@link index} and {@link at} API.\n\nAlso, customer no more can put into the shopping cart, either.\nEven the sale already had been put into the shopping cart, the\n{@link IShoppingCartCommodity commodity} will not be listed on the\nshopping cart. Also, it is not possible to appling an\n{@link IShoppingOrder order} with the suspended sale's commodity, either.\n\nBy the way, if the sale already had been applied to an order, the order\ncan be {@link IShoppingOrderPublish published} and\n{@link IShoppingSeller seller} must {@link IShoppingDelivery deliver} the\ngood to the customer."},{"method":"put","path":"/shoppings/sellers/sales/{id}/restore","name":"shoppings_sellers_sales_restore_putById","parameters":[{"type":"string","format":"uuid","description":" Target sale's {@link IShoppingSale.id}"}],"description":"Restore a sale\n\nRestore a {@link IShoppingSale sale} from {@link pause paused} or\n{@link suspend suspended} state\n\nTherefore the sale can be operated again if its\n{@link IShoppingSale.closed_at closing time} has not been reached.\nAlso, if a {@link IShoppingCustomer customer} had put the sale into the\nshopping cart when being paused or suspended, the\n{@link IShoppingCartCommodity commodity} will be listed again on the\nshopping cart."},{"method":"post","path":"/shoppings/sellers/sales/{saleId}/questions/{questionId}/answer","name":"shoppings_sellers_sales_questions_answer_postBySaleidAndQuestionid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Target question's {@link IShoppingSaleQuestion.id }"},{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","title","body","files"],"description":"Creation information of the article."}],"output":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["seller","id","snapshots","created_at"],"description":"Answers to questions about sale snapshots.\n\n`IShoppingSaleInquiryAnswer` is an entity that embodies the official\nanswer written by the {@link IShoppingSeller seller} to the\n{@link IShoppingSaleInquiry inquiry} written by the\n{@link IShoppingCustomer customer}.\n\nOf course, in addition to writing an official response like this, it is\nalso possible for the seller to communicate with the inqjuiry written\ncustomer and multiple customers through\n{@link IShoppingSaleInquiryComment comments} in the attribution inquiry.\n\nFor refererence, it is not possible to write comments on this answer.\nEncourage people to write comments on the inquiry article. This is to\nprevent comments from being scattered in both inquiry and answer\narticles."},"description":"Write an answer article.\n\nWrite a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry question article} written by a\n{@link IShoppingCustomer}.\n\nNote that, this is the formal answer that can be written only one per\na question article (but {@link update updatable}). Therefore, it needs to\nguide the {@link IShoppingSeller seller} to write it carefully.\n\nAlso, as seller can write {@link IShoppingSaleInquiryComment comments} to\nthe question article as many as he/she wants, it would be useful for\nadditional communication."},{"method":"put","path":"/shoppings/sellers/sales/{saleId}/questions/{questionId}/answer","name":"shoppings_sellers_sales_questions_answer_putBySaleidAndQuestionid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Target question's {@link IShoppingSaleQuestion.id }"},{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","title","body","files"],"description":"Creation information of the article."}],"output":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"]},"description":"Update an answer article.\n\nUpdate a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry question article} written by a\n{@link IShoppingCustomer}.\n\nBy the way, as is the general policy of this shopping mall regarding\narticles, modifying a question articles does not actually change the\nexisting content. Modified content is accumulated and recorded in the\nexisting article record as a new\n{@link IShoppingSaleInquiryAnswer.ISnapshot snapshot}. And this is made\npublic to everyone, including the {@link IShoppingCustomer customer} and the\n{@link IShoppingSeller seller}, and anyone who can view the article can\nalso view the entire editing histories.\n\nThis is to prevent customers or sellers from modifying their articles and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence."},{"method":"post","path":"/shoppings/sellers/sales/{saleId}/questions/{inquiryId}/comments","name":"shoppings_sellers_sales_questions_comments_postBySaleidAndInquiryid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Target inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales."},{"method":"patch","path":"/shoppings/sellers/sales/{saleId}/questions/{inquiryId}/comments","name":"shoppings_sellers_sales_questions_comments_patchBySaleidAndInquiryid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"body":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the comments with pagination and searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales."},{"method":"get","path":"/shoppings/sellers/sales/{saleId}/questions/{inquiryId}/comments/{id}","name":"shoppings_sellers_sales_questions_comments_getBySaleidAndInquiryidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales."},{"method":"put","path":"/shoppings/sellers/sales/{saleId}/questions/{inquiryId}/comments/{id}","name":"shoppings_sellers_sales_questions_comments_putBySaleidAndInquiryidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"},{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot content of the comment."},"description":"Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence."},{"method":"patch","path":"/shoppings/sellers/sales/{saleId}/questions","name":"shoppings_sellers_sales_questions_patchBySaleid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["seller","id","title","created_at","updated_at"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["secret","customer","answer","read_by_seller","id","title","created_at","updated_at"],"description":"Summarized information of the question."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every summarized questions.\n\nList up every {@link IShoppingSaleQuestion.ISummary summarized questions} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned questions are summarized, not detailed. If you want\nto get the detailed information of a question, use {@link adridges} function\nor {@link at} function for each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.ISummary.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.ISummary.secret} with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}."},{"method":"patch","path":"/shoppings/sellers/sales/{saleId}/questions/abridges","name":"shoppings_sellers_sales_questions_abridges_patchBySaleid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["seller","id","title","created_at","updated_at","format","body","files"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["secret","customer","answer","read_by_seller","id","title","created_at","updated_at","format","body","files"],"description":"Abridged information of the question."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every abridged questions.\n\nList up every {@link IShoppingSaleQuestion.IAbridge abridged questions} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned questions are abridged, not detailed. If you want\nto get the detailed information of a question, use {@link at} function\nfor each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.IAridge.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.IAridge.secret} with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/sellers/sales/{saleId}/questions/{id}","name":"shoppings_sellers_sales_questions_getBySaleidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Target question's {@link IShoppingSaleQuestion.id}"}],"output":{"type":"object","properties":{"secret":{"type":"boolean","title":"Whether the question article is secret or not","description":"Whether the question article is secret or not.\n\nIf secret article, only the writer customer and related seller can see\nthe detailed content."},"type":{"type":"string","enum":["question"],"title":"Type of the derived inquiry","description":"Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion}\n- `review`: {@link IShoppingSaleReview}"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["seller","id","snapshots","created_at"],"description":"Formal answer for the inquiry by the seller.","nullable":true,"title":"Formal answer for the inquiry by the seller"},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["secret","type","customer","answer","read_by_seller","id","snapshots","created_at"],"description":"Question about sale snapshot.\n\n`IShoppingSaleQuestion` is a subtype entity of {@link IShoppingSaleInquiry},\nand is used when a {@link IShoppingCustomer customer} wants to ask something\nabout a {@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at\nthe time) registered by the {@link IShoppingSeller seller}.\n\nAnd, like most shopping malls, `IShoppingSaleQuestion` also provides\na {@link secret} attribute, allowing you to create a \"secret message\" that can\nonly be viewed by the seller and the customer who wrote the question."},"description":"Get a question info.\n\nGet a detailed {@link IShoppingSaleQuestion question} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s question. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nquestions of the sales except the {@link IShoppingSaleQuestion.secret}\nvalue is `false`."},{"method":"post","path":"/shoppings/sellers/sales/{saleId}/reviews/{reviewId}/answer","name":"shoppings_sellers_sales_reviews_answer_postBySaleidAndReviewid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Target review's {@link IShoppingSaleReview.id }"},{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","title","body","files"],"description":"Creation information of the article."}],"output":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["seller","id","snapshots","created_at"],"description":"Answers to questions about sale snapshots.\n\n`IShoppingSaleInquiryAnswer` is an entity that embodies the official\nanswer written by the {@link IShoppingSeller seller} to the\n{@link IShoppingSaleInquiry inquiry} written by the\n{@link IShoppingCustomer customer}.\n\nOf course, in addition to writing an official response like this, it is\nalso possible for the seller to communicate with the inqjuiry written\ncustomer and multiple customers through\n{@link IShoppingSaleInquiryComment comments} in the attribution inquiry.\n\nFor refererence, it is not possible to write comments on this answer.\nEncourage people to write comments on the inquiry article. This is to\nprevent comments from being scattered in both inquiry and answer\narticles."},"description":"Write an answer article.\n\nWrite a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry review article} written by a\n{@link IShoppingCustomer}.\n\nNote that, this is the formal answer that can be written only one per\na review article (but {@link update updatable}). Therefore, it needs to\nguide the {@link IShoppingSeller seller} to write it carefully.\n\nAlso, as seller can write {@link IShoppingSaleInquiryComment comments} to\nthe review article as many as he/she wants, it would be useful for\nadditional communication."},{"method":"put","path":"/shoppings/sellers/sales/{saleId}/reviews/{reviewId}/answer","name":"shoppings_sellers_sales_reviews_answer_putBySaleidAndReviewid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Target review's {@link IShoppingSaleReview.id }"},{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","title","body","files"],"description":"Creation information of the article."}],"output":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"]},"description":"Update an answer article.\n\nUpdate a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry review article} written by a\n{@link IShoppingCustomer}.\n\nBy the way, as is the general policy of this shopping mall regarding\narticles, modifying a review articles does not actually change the\nexisting content. Modified content is accumulated and recorded in the\nexisting article record as a new\n{@link IShoppingSaleInquiryAnswer.ISnapshot snapshot}. And this is made\npublic to everyone, including the {@link IShoppingCustomer customer} and the\n{@link IShoppingSeller seller}, and anyone who can view the article can\nalso view the entire editing histories.\n\nThis is to prevent customers or sellers from modifying their articles and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence."},{"method":"post","path":"/shoppings/sellers/sales/{saleId}/reviews/{inquiryId}/comments","name":"shoppings_sellers_sales_reviews_comments_postBySaleidAndInquiryid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Target inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Create an inquiry comment.\n\nCreate an {@link IShoppingSaleInquiryComment inquiry comment} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\ncreate an inquiry comment to your own {@link IShoppingSale sale}'s inquiry.\nOtherwise, you can create an inquiry comment to every inquiries of the sales."},{"method":"patch","path":"/shoppings/sellers/sales/{saleId}/reviews/{inquiryId}/comments","name":"shoppings_sellers_sales_reviews_comments_patchBySaleidAndInquiryid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"body":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the comments with pagination and searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every inquiry comments.\n\nList up every {@link IShoppingSaleInquiryComment inquiry comments} of a\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}\nwith {@link IPage pagination}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleInquiryComment.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleInquiryComment.IRequest.sort sort condition}.\n\nBy the way, if you're a {@link IShoppingSeller seller}, you can only access\nto the your own {@link IShoppingSale sale}'s inquiries. Otherwise, you\ncan access to every inquiries of the sales."},{"method":"get","path":"/shoppings/sellers/sales/{saleId}/reviews/{inquiryId}/comments/{id}","name":"shoppings_sellers_sales_reviews_comments_getBySaleidAndInquiryidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"}],"output":{"type":"object","properties":{"writer":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["administrator"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."},{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},{"type":"object","properties":{"type":{"type":"string","enum":["seller"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["id","nickname","emails","created_at"],"description":"Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"customer":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["id","channel","external_user","href","referrer","ip","created_at"],"description":"Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["type","member","customer","citizen","id","created_at"],"description":"Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely."}]},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"parent_id":{"type":"string","format":"uuid","nullable":true,"title":"Parent comment's ID","description":"Parent comment's ID."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when a comment being created, and is\naccumulated every time the comment is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of comment","description":"Creation time of comment."}},"required":["writer","id","parent_id","snapshots","created_at"],"description":"A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry."},"description":"Get an inquiry comment info.\n\nGet a detailed {@link IShoppingSaleInquiryComment inquiry comment}\ninformation of a {@link IShoppingSaleQuestion question} or\n{@link IShoppingSaleReview review}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s inquiry comment.\nOtherwise, you can access to every inquiry comments of the sales."},{"method":"put","path":"/shoppings/sellers/sales/{saleId}/reviews/{inquiryId}/comments/{id}","name":"shoppings_sellers_sales_reviews_comments_putBySaleidAndInquiryidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged inquiry's {@link IShoppingSaleInquiry.id }"},{"type":"string","format":"uuid","description":" Target inquiry comment's {@link IShoppingSaleInquiryComment.id}"},{"type":"object","properties":{"format":{"type":"string","enum":["html","md","txt"],"title":"Format of body","description":"Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`."},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["format","body","files"],"description":"Creation information of the comment."}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or comment."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of comment","description":"Content body of comment."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","body","files"],"description":"Snapshot content of the comment."},"description":"Update an inquiry comment.\n\nUpdate an {@link IShoppingSaleInquiryComment inquiry comment} to a specific\n{@link IShoppingSaleQuestion question} or {@link IShoppingSaleReview review}.\n\nBy the way, as is the general policy of this shopping mall regarding\ncomments, modifying a comment does not actually change the existing content.\nModified content is accumulated and recorded in the existing comment record\nas a new {@link IShoppingSaleInquiryComment.ISnapshot snapshot}. And this\nis made public to everyone, who can read this inquiry comment.\n\nThis is to prevent customers or sellers from modifying their comments and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence."},{"method":"patch","path":"/shoppings/sellers/sales/{saleId}/reviews","name":"shoppings_sellers_sales_reviews_patchBySaleid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"minimum":{"type":"number","minimum":0,"maximum":100},"maximum":{"type":"number","minimum":0,"maximum":100}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at","-score","+score"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number","title":"Score of the review","description":"Score of the review."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["seller","id","title","created_at","updated_at"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."}},"required":["score","customer","answer","read_by_seller","id","title","created_at","updated_at"],"description":"Summarized information of the review."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every summarized reviews.\n\nList up every {@link IShoppingSaleReview.ISummary summarized reviews} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned reviews are summarized, not detailed. If you want\nto get the detailed information of a review, use {@link adridges} function\nor {@link at} function for each article.\n\nAlso, returned review has {@link IShoppingSaleReview.ISummary.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}."},{"method":"patch","path":"/shoppings/sellers/sales/{saleId}/reviews/abridges","name":"shoppings_sellers_sales_reviews_abridges_patchBySaleid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"object","properties":{"search":{"type":"object","properties":{"name":{"type":"string"},"nickname":{"type":"string"},"answered":{"type":"boolean","nullable":true},"title":{"type":"string"},"body":{"type":"string"},"title_or_body":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"minimum":{"type":"number","minimum":0,"maximum":100},"maximum":{"type":"number","minimum":0,"maximum":100}}},"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at","-nickname","-answered_at","-title","-updated_at","+nickname","+answered_at","+title","+updated_at","-score","+score"]},"title":"Sorting conditions","description":"Sorting conditions."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of summarized informations with pagination searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"title":"Score of the review","description":"Score of the review."},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["seller","id","title","created_at","updated_at","format","body","files"],"nullable":true,"title":"Formal answer for the inquiry by the seller","description":"Formal answer for the inquiry by the seller."},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"title":{"type":"string","title":"Title of the last snapshot","description":"Title of the last snapshot."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the article","description":"Creation time of the article."},"updated_at":{"type":"string","format":"date-time","title":"Modification time of the article","description":"Modification time of the article.\n\nIn other words, the time when the last snapshot was created."},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["score","customer","answer","read_by_seller","id","title","created_at","updated_at","format","body","files"],"description":"Abridged information of the review."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every abridged reviews.\n\nList up every {@link IShoppingSaleReview.IAbridge abridged reviews} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned reviews are abridged, not detailed. If you want\nto get the detailed information of a review, use {@link at} function\nfor each article.\n\nAlso, returned review has {@link IShoppingSaleReview.IAridge.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/sellers/sales/{saleId}/reviews/{id}","name":"shoppings_sellers_sales_reviews_getBySaleidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Target review's {@link IShoppingSaleReview.id}"}],"output":{"type":"object","properties":{"type":{"type":"string","enum":["review"],"title":"Type of the derived inquiry","description":"Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion}\n- `review`: {@link IShoppingSaleReview}"},"customer":{"type":"object","properties":{"type":{"type":"string","enum":["customer"],"title":"Discriminant for the type of customer","description":"Discriminant for the type of customer."},"member":{"type":"object","properties":{"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nOnly when has verified as a citizen, with mobile number and real name.\n\nFor reference, if the member has signed up as a seller or administrator,\nthis citizen information must be.","nullable":true,"title":"Citizen information"},"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\nIf the member also signed up as a seller.","nullable":true,"title":"Seller information"},"administrator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the administrator has signed up."}},"required":["id","created_at"],"description":"Administrator information.\n\nIf the member also signed up as an administrator.","nullable":true,"title":"Administrator information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"nickname":{"type":"string","title":"Nickname that uniquely identifies the member","description":"Nickname that uniquely identifies the member."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"string","format":"email","title":"Email address value","description":"Email address value."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","value","created_at"],"description":"Email address of member.\n\nThis shopping mall system allows multiple email addresses to be\nregistered for one {@link IShoppingMember member}. If you don't have to\nplan such multiple email addresses, just use only one."},"title":"List of emails","description":"List of emails."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother words, the time when the member has signed up."}},"required":["citizen","seller","administrator","id","nickname","emails","created_at"],"description":"Membership information.\n\nIf the customer has joined as a member.","nullable":true,"title":"Membership information"},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen information.\n\nIf the customer has verified his real name and mobile number.","nullable":true,"title":"Citizen information"},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"channel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"external_user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"citizen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"mobile":{"type":"string","pattern":"^[0-9]*$","title":"Mobile number","description":"Mobile number."},"name":{"type":"string","title":"Real name, or equivalent nickname","description":"Real name, or equivalent nickname."}},"required":["id","created_at","mobile","name"],"description":"Citizen activation info.","nullable":true,"title":"Citizen activation info"},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record.\n\nAnother word, first time when the external user connected."},"application":{"type":"string","title":"Identifier code of the external service","description":"Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common."},"uid":{"type":"string","title":"Identifier key of external user from the external system","description":"Identifier key of external user from the external system."},"nickname":{"type":"string","title":"Nickname of external user in the external system","description":"Nickname of external user in the external system."},"data":{"description":"Additional information about external user from the external\nsystem."}},"required":["id","citizen","created_at","application","uid","nickname","data"],"description":"External user information.\n\nWhen the customer has come frome an external service.","nullable":true,"title":"External user information"},"href":{"type":"string","format":"uri","title":"Connection address","description":"Connection address.\n\nSame with {@link window.location.href} of client."},"referrer":{"type":"string","format":"uri","nullable":true,"title":"Referrer address","description":"Referrer address.\n\nSame with {@link window.document.referrer} of client."},"ip":{"oneOf":[{"type":"string","format":"ipv4"},{"type":"string","format":"ipv6"}],"title":"Connection IP Address","description":"Connection IP Address."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the connection record","description":"Creation time of the connection record."}},"required":["type","member","citizen","id","channel","external_user","href","referrer","ip","created_at"],"description":"Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically."},"answer":{"type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation tmie of record","description":"Creation tmie of record.\n\nAnother words, the time when the seller has signed up."}},"required":["id","created_at"],"description":"Seller information.\n\n`IShoppingSeller` is an entity that embodies a person who registers\n{@link IShoppingSale sales} to operate selling activities, with\n{@link IShoppingMember membership} joining.\n\nFor reference, unlike {@link IShoppingCustomer customers} which can\nparticipate even without membership joining, seller must join membership\nto operate sales. Also, seller must do the\n{@link IShoppingCitizen real-name and mobile authentication}, too."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["id","created_at","format","title","body","files"],"description":"Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["seller","id","snapshots","created_at"],"description":"Formal answer for the inquiry by the seller.","nullable":true,"title":"Formal answer for the inquiry by the seller"},"read_by_seller":{"type":"boolean","title":"Whether the seller has viewed the inquiry or not","description":"Whether the seller has viewed the inquiry or not."},"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"snapshots":{"type":"array","items":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"title":"Score of the review","description":"Score of the review."},"id":{"type":"string","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of snapshot record","description":"Creation time of snapshot record.\n\nIn other words, creation time or update time or article."},"format":{"type":"string","enum":["html","md","txt"]},"title":{"type":"string","title":"Title of article","description":"Title of article."},"body":{"type":"string","title":"Content body of article","description":"Content body of article."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]},"title":"List of attachment files","description":"List of attachment files."}},"required":["score","id","created_at","format","title","body","files"],"description":"Snapshot content of the review article."},"minItems":1,"title":"List of snapshot contents","description":"List of snapshot contents.\n\nIt is created for the first time when an article is created, and is\naccumulated every time the article is modified."},"created_at":{"type":"string","format":"date-time","title":"Creation time of article","description":"Creation time of article."}},"required":["type","customer","answer","read_by_seller","id","snapshots","created_at"],"description":"Reviews for sale snapshots.\n\n`IShoppingSaleReview` is a subtype entity of {@link IShoppingSaleInquiry},\nand is used when a {@link IShoppingCustomer customer} purchases a\n{@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at the time)\nregistered by the {@link IShoppingSeller seller} as a product and leaves a\nreview and rating for it.\n\nFor reference, `IShoppingSaleReview` and\n{@link IShoppingOrderGod shopping_order_goods} have a logarithmic relationship\nof N: 1, but this does not mean that customers can continue to write reviews\nfor the same product indefinitely. Wouldn't there be restrictions, such as\nif you write a review once, you can write an additional review a month later?"},"description":"Get a review info.\n\nGet a detailed {@link IShoppingSaleReview review} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s review. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nreviews of the sales."},{"method":"post","path":"/shoppings/sellers/sales/{saleId}/snapshots/{id}/replica","name":"shoppings_sellers_sales_snapshots_replica_postBySaleidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id}"},{"type":"string","format":"uuid","description":" Target snapshot's {@link IShoppingSaleSnapshot.id }"}],"output":{"type":"object","properties":{"section_code":{"type":"string","title":"Belonged section's {@link IShoppingSection.code}","description":"Belonged section's {@link IShoppingSection.code}."},"status":{"type":"string","enum":["paused","suspended"],"nullable":true,"title":"Initial status of the sale","description":"Initial status of the sale.\n\n`null` or `undefined`: No restriction\n`paused`: Starts with {@link ITimestamps.paused_at paused} status\n`suspended`: Starts with {@link ITimestamps.suspended_at suspended} status"},"opened_at":{"type":"string","format":"date-time","nullable":true,"title":"Opening time of the sale","description":"Opening time of the sale."},"closed_at":{"type":"string","format":"date-time","nullable":true,"title":"Closing time of the sale","description":"Closing time of the sale.\n\nIf this value is `null`, the sale be continued forever."},"content":{"type":"object","properties":{"title":{"type":"string"},"format":{"type":"string","enum":["html","md","txt"]},"body":{"type":"string"},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]}},"thumbnails":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"title":"File name, except extension","description":"File name, except extension.\n\nIf there's file `.gitignore`, then its name is an empty string."},"extension":{"type":"string","minLength":1,"maxLength":8,"nullable":true,"title":"Extension","description":"Extension.\n\nPossible to omit like `README` case."},"url":{"type":"string","format":"uri","title":"URL path of the real file","description":"URL path of the real file."}},"required":["name","extension","url"]}}},"required":["title","format","body","files","thumbnails"]},"channels":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","title":"Target channel's {@link IShoppingChannel.code}","description":"Target channel's {@link IShoppingChannel.code}."},"category_ids":{"type":"array","items":{"type":"string","format":"uuid"},"title":"List of target categories' {@link IShoppingChannelCategory.id}s","description":"List of target categories' {@link IShoppingChannelCategory.id}s.\n\nIf empty, it means all categories of the channel is listing the sale."}},"required":["code","category_ids"],"description":"Creation information of the target channel (and categories) of sale to sell."}},"units":{"type":"array","items":{"type":"object","properties":{"options":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean"],"title":"Type of descriptive option","description":"Type of descriptive option.\n\nWhich typed value should be written when purchasing."},"name":{"type":"string","title":"Readable name of the option","description":"Readable name of the option."}},"required":["type","name"],"description":"Creation information of the descriptive option."},{"type":"object","properties":{"type":{"type":"string","enum":["select"],"title":"Discriminant for the type of selectable option","description":"Discriminant for the type of selectable option."},"name":{"type":"string","title":"Represents the name of the option","description":"Represents the name of the option."},"variable":{"type":"boolean","title":"Whether the option is variable or not","description":"Whether the option is variable or not.\n\nWhen type of current option is \"select\", this attribute means whether\nselecting different candidate value affects the final stock or not."},"candidates":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","title":"Represents the name of the candidate value","description":"Represents the name of the candidate value."}},"required":["name"],"description":"Creation information of the candidate value."},"minItems":1,"title":"List of candidate values","description":"List of candidate values."}},"required":["type","name","variable","candidates"],"description":"Creation information of the selectable option."}]},"title":"List of options","description":"List of options."},"stocks":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","title":"Representative name of the stock","description":"Representative name of the stock."},"price":{"type":"object","properties":{"nominal":{"type":"number","minimum":0,"title":"Nominal price","description":"Nominal price.\n\nThis is not {@link real real price} to pay, but just a nominal price to show.\nIf this value is greater than the {@link real real price}, it would be shown\nlike {@link IShoppingSeller seller} is giving a discount."},"real":{"type":"number","minimum":0,"title":"Real price to pay","description":"Real price to pay."}},"required":["nominal","real"],"description":"Shopping price interface."},"quantity":{"type":"integer","minimum":1,"title":"Initial inventory quantity","description":"Initial inventory quantity."},"choices":{"type":"array","items":{"type":"object","properties":{"option_index":{"type":"integer","description":"Target option's index number in\n{@link IShoppingSaleUnit.ICreate.options}."},"candidate_index":{"type":"integer","description":"Target candidate's index number in\n{@link IShoppingSaleUnitSelectableOption.ICreate.candidates}."}},"required":["option_index","candidate_index"],"description":"Creation information of stock choice."},"title":"List of choices","description":"List of choices.\n\nWhich candidate values being chosen for each option."}},"required":["name","price","quantity","choices"],"description":"Creation information of the stock."},"minItems":1,"title":"List of final stocks","description":"List of final stocks."},"name":{"type":"string","title":"Representative name of the unit","description":"Representative name of the unit."},"primary":{"type":"boolean","title":"Whether the unit is primary or not","description":"Whether the unit is primary or not.\n\nJust a labeling value."},"required":{"type":"boolean","title":"Whether the unit is required or not","description":"Whether the unit is required or not.\n\nWhen the unit is required, the customer must select the unit. If do not\nselect, customer can't buy it.\n\nFor example, if there's a sale \"Macbook Set\" and one of the unit is the\n\"Main Body\", is it possible to buy the \"Macbook Set\" without the\n\"Main Body\" unit? This property is for that case."}},"required":["options","stocks","name","primary","required"],"description":"Creation information of sale unit."},"minItems":1},"tags":{"type":"array","items":{"type":"string"}}},"required":["section_code","opened_at","closed_at","content","channels","units","tags"],"description":"Creation information of sale."},"description":"Get replica of a snapshot.\n\nGet a {@link IShoppingSale.ICreate} typed info of the target\n{@link IShoppingSaleSnapshot snapshot} record for replication.\n\nIt would be useful for creating a new replication {@link IShoppingSale sale}\nfrom the old snapshot."},{"method":"post","path":"/shoppings/sellers/sales/{saleId}/units/{unitId}/stocks/{stockId}/supplements","name":"shoppings_sellers_sales_units_stocks_supplements_postBySaleidAndUnitidAndStockid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged unit's {@link IShoppingSaleUnit.id }"},{"type":"string","format":"uuid","description":" Target stock's {@link IShoppingSaleUnitStock.id }"},{"type":"object","properties":{"value":{"type":"integer","title":"Supplemented quantity","description":"Supplemented quantity."}},"required":["value"],"description":"Creation information of the supplement."}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"integer","title":"Supplemented quantity","description":"Supplemented quantity."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the record","description":"Creation time of the record.\n\nAnother words, the time when inventory of the stock being supplemented."}},"required":["id","value","created_at"],"description":"Supplementation of inventory quantity of stock.\n\nYou know what? If a {@link IShoppingSaleUnitStock stock} has been sold over\nits {@link IShoppingSaleUnitStock.ICreate.quantity initial inventory quantity},\nthe stock can't be sold anymore, because of out of stock. In that case, how the\n{@link IShoppingSeller} should do?\n\nWhen the sotck is sold out, seller can supplement the inventory record by\nregistering this `IShoppingSaleUnitStockSupplement` record. Right, this\n`IShoppingSaleUnitStockSupplement` is an entity that embodies the\nsupplementation of the inventory quantity of the belonged stock."},"description":"Create a supplement.\n\nCreate a {@link IShoppingSaleUnitStockSupplement supplement history} of a\nspecific {@link IShoppingSaleUnitStock stock}.\n\nTherefore, {@link IShoppingSaleUnitStockInventory.income inventory} of the\ntarget stock will be increased by the\n{@link IShoppingSaleUnitStockSupplement.value supplement's value}."},{"method":"patch","path":"/shoppings/sellers/sales/{saleId}/units/{unitId}/stocks/{stockId}/supplements","name":"shoppings_sellers_sales_units_stocks_supplements_patchBySaleidAndUnitidAndStockid","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged unit's {@link IShoppingSaleUnit.id }"},{"type":"string","format":"uuid","description":" Target stock's {@link IShoppingSaleUnitStock.id }"},{"type":"object","properties":{"sort":{"type":"array","items":{"type":"string","enum":["-created_at","+created_at"]},"title":"Sortable columns","description":"Sortable columns."},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request information of the stock supplement list."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"value":{"type":"integer","title":"Supplemented quantity","description":"Supplemented quantity."},"created_at":{"type":"string","format":"date-time","title":"Creation time of the record","description":"Creation time of the record.\n\nAnother words, the time when inventory of the stock being supplemented."}},"required":["id","value","created_at"],"description":"Supplementation of inventory quantity of stock.\n\nYou know what? If a {@link IShoppingSaleUnitStock stock} has been sold over\nits {@link IShoppingSaleUnitStock.ICreate.quantity initial inventory quantity},\nthe stock can't be sold anymore, because of out of stock. In that case, how the\n{@link IShoppingSeller} should do?\n\nWhen the sotck is sold out, seller can supplement the inventory record by\nregistering this `IShoppingSaleUnitStockSupplement` record. Right, this\n`IShoppingSaleUnitStockSupplement` is an entity that embodies the\nsupplementation of the inventory quantity of the belonged stock."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every supplements.\n\nList up every {@link IShoppingSaleUnitStockSupplement supplement histories}\nof a specific {@link IShoppingSaleUnitStock stock}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleUnitStockSupplement.IRequest.search search condition} in\nthe request body. Also, it is possible to customize sequence order of\nrecords by configuring {@link IShoppingSaleUnitStockSupplement.IRequest.sort}\nproperty."},{"method":"put","path":"/shoppings/sellers/sales/{saleId}/units/{unitId}/stocks/{stockId}/supplements/{id}","name":"shoppings_sellers_sales_units_stocks_supplements_putBySaleidAndUnitidAndStockidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged unit's {@link IShoppingSaleUnit.id }"},{"type":"string","format":"uuid","description":" Target stock's {@link IShoppingSaleUnitStock.id }"},{"type":"string","format":"uuid","description":" Target supplement's {@link IShoppingSaleUnitStockSupplement.id}"},{"type":"object","properties":{"value":{"type":"integer","title":"Supplemented quantity","description":"Supplemented quantity."}},"required":["value"],"description":"Creation information of the supplement."}],"description":"Update a supplement.\n\nUpdate quantity value of a {@link IShoppingSaleUnitStockSupplement supplement}\nof a specific {@link IShoppingSaleUnitStock stock}.\n\nTherefore, {@link IShoppingSaleUnitStockInventory.income inventory} of the\ntarget stock will be changed by the\n{@link IShoppingSaleUnitStockSupplement.value supplement's value}."},{"method":"delete","path":"/shoppings/sellers/sales/{saleId}/units/{unitId}/stocks/{stockId}/supplements/{id}","name":"shoppings_sellers_sales_units_stocks_supplements_eraseBySaleidAndUnitidAndStockidAndId","parameters":[{"type":"string","format":"uuid","description":" Belonged sale's {@link IShoppingSale.id }"},{"type":"string","format":"uuid","description":" Belonged unit's {@link IShoppingSaleUnit.id }"},{"type":"string","format":"uuid","description":" Target stock's {@link IShoppingSaleUnitStock.id }"},{"type":"string","format":"uuid","description":" Target supplement's {@link IShoppingSaleUnitStockSupplement.id}"}],"description":"Erase a supplement.\n\nErase a {@link IShoppingSaleUnitStockSupplement supplement} of a specific\n{@link IShoppingSaleUnitStock stock}.\n\nTherefore, {@link IShoppingSaleUnitStockInventory.income inventory} of the\ntarget stock will be decreased by the\n{@link IShoppingSaleUnitStockSupplement.value supplement's value}."},{"method":"patch","path":"/shoppings/sellers/systematic/channels","name":"shoppings_sellers_systematic_channels_patch","parameters":[{"type":"object","properties":{"search":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-channel.code","-channel.name","-channel.created_at","+channel.code","+channel.name","+channel.created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the channels with pagination and searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Name of the channel","description":"Name of the channel."}},"required":["id","created_at","code","name"],"description":"Channel information.\n\n`IShoppingChannel` is a concept that shapes the distribution channel in the\nmarket. Therefore, the difference in the channel in this e-commerce system\nmeans that it is another site or application.\n\nBy the way, if your shopping mall system requires only one channel, then\njust use only one. This concept is designed to be expandable in the future."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every channels.\n\nList up every {@link IShoppingChannel channels} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingChannel.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingChannel.IRequest.sort sort condition}."},{"method":"patch","path":"/shoppings/sellers/systematic/sections","name":"shoppings_sellers_systematic_sections_patch","parameters":[{"type":"object","properties":{"search":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}}},"sort":{"type":"array","items":{"type":"string","enum":["-section.code","-section.name","-section.created_at","+section.code","+section.name","+section.created_at"]}},"page":{"type":"integer","title":"Page number","description":"Page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."}},"description":"Request of the sections with pagination and searching/sorting options."}],"output":{"type":"object","properties":{"pagination":{"type":"object","properties":{"current":{"type":"integer","title":"Current page number","description":"Current page number."},"limit":{"type":"integer","title":"Limitation of records per a page","description":"Limitation of records per a page."},"records":{"type":"integer","title":"Total records in the database","description":"Total records in the database."},"pages":{"type":"integer","title":"Total pages","description":"Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling."}},"required":["current","limit","records","pages"],"description":"Page information."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","code","name","created_at"],"description":"Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future."},"title":"List of records","description":"List of records."}},"required":["pagination","data"],"description":"A page.\n\nCollection of records with pagination indformation."},"description":"List up every sections.\n\nList up every {@link IShoppingSection sections} with pagination.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSection.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingSection.IRequest.sort sort condition}."},{"method":"get","path":"/shoppings/sellers/systematic/sections/{id}","name":"shoppings_sellers_systematic_sections_getById","parameters":[{"type":"string","format":"uuid","description":" Target section's {@link IShoppingSection.id}"}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","code","name","created_at"],"description":"Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future."},"description":"Get a section info.\n\nGet a detailed {@link IShoppingSection section} information."},{"method":"get","path":"/shoppings/sellers/systematic/sections/{code}/get","name":"shoppings_sellers_systematic_sections_get_getByCode","parameters":[{"type":"string","description":" Target section's {@link IShoppingSection.code}"}],"output":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Primary Key","description":"Primary Key."},"code":{"type":"string","title":"Identifier code","description":"Identifier code."},"name":{"type":"string","title":"Representative name of the section","description":"Representative name of the section."},"created_at":{"type":"string","format":"date-time","title":"Creation time of record","description":"Creation time of record."}},"required":["id","code","name","created_at"],"description":"Section information.\n\n`IShoppingSection` is a concept that refers to the spatial information of\nthe market.\n\nIf we compare the section mentioned here to the offline market, it means a\nspatially separated area within the store, such as the \"fruit corner\" or\n\"butcher corner\". Therefore, in the {@link IShoppingSale sale} entity, it is\nnot possible to classify multiple sections simultaneously, but only one section\ncan be classified.\n\nBy the way, if your shopping mall system requires only one section, then just\nuse only one. This concept is designed to be expandable in the future."},"description":"Get a section info by its code.\n\nGet a detailed {@link IShoppingSection section} information by its code."}],"errors":[{"method":"post","path":"/shoppings/admins/coupons","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/admins/coupons","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/admins/coupons/{id}","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/admins/orders","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/admins/orders/{id}","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/admins/sales","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/admins/sales/{id}","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/admins/sales/{saleId}/snapshots","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/admins/sales/{saleId}/snapshots/{id}","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/admins/sales/{saleId}/snapshots/{id}/flip","messages":["Failed to escape $ref"]},{"method":"post","path":"/shoppings/admins/systematic/channels/{channelCode}/categories","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/admins/systematic/channels/{channelCode}/categories","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/admins/systematic/channels/{channelCode}/categories/{id}","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/admins/systematic/channels/{channelCode}/categories/{id}/invert","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/admins/systematic/channels/{id}","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/admins/systematic/channels/hierarchical","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/admins/systematic/channels/{code}/get","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/customers/coupons","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/coupons/{id}","messages":["Failed to escape $ref"]},{"method":"post","path":"/shoppings/customers/coupons/tickets","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/customers/coupons/tickets","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/coupons/tickets/{id}","messages":["Failed to escape $ref"]},{"method":"post","path":"/shoppings/customers/carts/{cartId}/commodities","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/customers/carts/{cartId}/commodities","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/carts/{cartId}/commodities/{id}","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/customers/carts/{cartId}/commodities/discountable","messages":["Failed to escape $ref"]},{"method":"post","path":"/shoppings/customers/orders","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/customers/orders","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/orders/{id}","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/orders/{id}/price","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/customers/orders/{id}/discountable","messages":["Failed to escape $ref"]},{"method":"put","path":"/shoppings/customers/orders/{id}/discount","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/customers/sales","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/sales/{id}","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/customers/sales/{saleId}/snapshots","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/sales/{saleId}/snapshots/{id}","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/sales/{saleId}/snapshots/{id}/flip","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/customers/systematic/channels/{channelCode}/categories","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/systematic/channels/{channelCode}/categories/{id}","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/systematic/channels/{channelCode}/categories/{id}/invert","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/customers/systematic/channels/hierarchical","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/systematic/channels/{id}","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/customers/systematic/channels/{code}/get","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/sellers/deliveries","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/sellers/deliveries/{id}","messages":["Failed to escape $ref"]},{"method":"post","path":"/shoppings/sellers/coupons","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/sellers/coupons","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/sellers/coupons/{id}","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/sellers/orders","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/sellers/orders/{id}","messages":["Failed to escape $ref"]},{"method":"post","path":"/shoppings/sellers/sales","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/sellers/sales","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/sellers/sales/{id}","messages":["Failed to escape $ref"]},{"method":"put","path":"/shoppings/sellers/sales/{id}","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/sellers/sales/{saleId}/snapshots","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/sellers/sales/{saleId}/snapshots/{id}","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/sellers/sales/{saleId}/snapshots/{id}/flip","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/sellers/systematic/channels/{channelCode}/categories","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/sellers/systematic/channels/{channelCode}/categories/{id}","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/sellers/systematic/channels/{channelCode}/categories/{id}/invert","messages":["Failed to escape $ref"]},{"method":"patch","path":"/shoppings/sellers/systematic/channels/hierarchical","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/sellers/systematic/channels/{id}","messages":["Failed to escape $ref"]},{"method":"get","path":"/shoppings/sellers/systematic/channels/{code}/get","messages":["Failed to escape $ref"]}],"options":{"keyword":false,"separate":null}} \ No newline at end of file diff --git a/examples/positional/toss.json b/examples/positional/toss.json index 0d3890b..c8bb2a0 100644 --- a/examples/positional/toss.json +++ b/examples/positional/toss.json @@ -1,10688 +1 @@ -{ - "openapi": "3.0.3", - "functions": [ - { - "method": "post", - "path": "/v1/billing/authorizations/card", - "name": "v1_billing_authorizations_card_post", - "parameters": [ - { - "type": "object", - "properties": { - "cardNumber": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "[0-9]{16}" - }, - "cardExpirationYear": { - "description": "카드 만료 년도 (2 자리).", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "\\d{2}" - }, - "cardExpirationMonth": { - "description": "카드 만료 월 (2 자리).", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^(0[1-9]|1[012])$" - }, - "cardPassword": { - "description": "카드 비밀번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerBirthday": { - "description": "고객의 생년월일.\n\n표기 형식 YYMMDD.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$" - }, - "consumerName": { - "description": "고객의 이름.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customerEmail": { - "description": "고객의 이메일.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "format": "email" - }, - "vbv": { - "type": "object", - "properties": { - "cavv": { - "description": "3D Secure 인증 세션에 대한 인증 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "xid": { - "description": "트랜잭션 ID.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "eci": { - "description": "3DS 인증 결과에 대한 코드 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "cavv", - "xid", - "eci" - ], - "x-typia-jsDocTags": [] - }, - "customerKey": { - "description": "고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "cardNumber", - "cardExpirationYear", - "cardExpirationMonth", - "cardPassword", - "customerBirthday", - "customerKey" - ], - "description": "간편 결제 카드 등록 정보.", - "x-typia-jsDocTags": [] - } - ], - "output": { - "type": "object", - "properties": { - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "billingKey": { - "description": "{@link ITossBilling } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "method": { - "type": "string", - "enum": [ - "카드" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cardCompany": { - "description": "카드사 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "cardNumber": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "[0-9]{16}" - }, - "authenticatedAt": { - "description": "인증 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "customerKey": { - "description": "고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "mId", - "billingKey", - "method", - "cardCompany", - "cardNumber", - "authenticatedAt", - "customerKey" - ], - "description": "간편 결제 등록 수단 정보.\n\n`ITossBilling` 은 간편 결제 등록 수단을 형상화한 자료구조 인터페이스로써, 고객이 자신의\n신용 카드를 서버에 등록해두고, 매번 결제가 필요할 때마다 카드 정보를 반복 입려하는 일\n없이 간편하게 결제를 진행하고자 할 때 사용한다.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "간편 결제 카드 등록하기.\n\n`billing.authorizations.card.store` 는 고객이 자신의 신록 카드를 서버에 등록해두고,\n매번 결제가 필요할 때마다 카드 정보를 반복 입력하는 일 없이 간편하게 결제를\n진행하고자 할 때, 호출되는 API 함수이다.\n\n참고로 `billing.authorizations.card.store` 는 클라이언트 어플리케이션이 토스\n페이먼츠가 제공하는 간편 결제 카드 등록 창을 사용하는 경우, 귀하의 백엔드 서버가 이를\n실 서비스에서 호출하는 일은 없을 것이다. 다만, 고객이 간편 결제 카드를 등록하는\n상황을 시뮬레이션하기 위하여, 테스트 자동화 프로그램 수준에서 사용될 수는 있다." - }, - { - "method": "post", - "path": "/v1/billing/authorizations/{billingKey}", - "name": "v1_billing_authorizations_postByBillingkey", - "parameters": [ - { - "type": "string", - "description": "대상 정보의 " - }, - { - "type": "object", - "properties": { - "customerKey": { - "description": "고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "customerKey" - ], - "description": "고객 식별자 정보.", - "x-typia-jsDocTags": [] - } - ], - "output": { - "type": "object", - "properties": { - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "billingKey": { - "description": "{@link ITossBilling } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "method": { - "type": "string", - "enum": [ - "카드" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cardCompany": { - "description": "카드사 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "cardNumber": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "[0-9]{16}" - }, - "authenticatedAt": { - "description": "인증 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "customerKey": { - "description": "고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "mId", - "billingKey", - "method", - "cardCompany", - "cardNumber", - "authenticatedAt", - "customerKey" - ], - "description": "간편 결제 등록 수단 정보.\n\n`ITossBilling` 은 간편 결제 등록 수단을 형상화한 자료구조 인터페이스로써, 고객이 자신의\n신용 카드를 서버에 등록해두고, 매번 결제가 필요할 때마다 카드 정보를 반복 입려하는 일\n없이 간편하게 결제를 진행하고자 할 때 사용한다.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "간편 결제로 등록한 수단 조회하기.\n\n`billing.authorizations.at` 은 고객이 간편 결제를 위하여 토스 페이먼츠 서버에\n등록한 결제 수단을 조회하는 함수이다.\n\n주로 클라이언트 어플리케이션이 토스 페이먼츠가 자체적으로 제공하는 결제 창을 사용하는\n경우, 그래서 프론트 어플리케이션이 귀하의 백엔드 서버에 `billingKey` 와` customerKey`\n만을 전달해주어, 상세 간편 결제 수단 정보가 필요할 때 사용한다." - }, - { - "method": "post", - "path": "/v1/billing/{billingKey}", - "name": "v1_billing_postByBillingkey", - "parameters": [ - { - "type": "string", - "description": "간편 결제에 등록한 수단의 " - }, - { - "type": "object", - "properties": { - "method": { - "type": "string", - "enum": [ - "billing" - ], - "description": "결제 수단이 간편 결제임을 의미함.", - "x-typia-required": true, - "x-typia-optional": false - }, - "billingKey": { - "description": "{@link IPaymentStore } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "customerKey": { - "description": "고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "method", - "billingKey", - "orderId", - "amount", - "customerKey" - ], - "description": "간편 결제를 이용한 결제 신청 정보.", - "x-typia-jsDocTags": [] - } - ], - "output": { - "oneOf": [ - { - "type": "object", - "properties": { - "card": { - "type": "object", - "properties": { - "company": { - "description": "카드사 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "[0-9]{16}" - }, - "installmentPlanMonths": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "isInterestFree": { - "type": "boolean", - "description": "무이자 할부 적용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "useCardPoint": { - "type": "boolean", - "description": "카드 포인트 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cardType": { - "type": "string", - "enum": [ - "신용", - "체크", - "기프트" - ], - "description": "카드 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "ownerType": { - "type": "string", - "enum": [ - "개인", - "법인" - ], - "description": "카드의 소유자 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "acquireStatus": { - "type": "string", - "enum": [ - "READY", - "CANCELED", - "REQUESTED", - "COMPLETED", - "CANCEL_REQUESTED" - ], - "description": "카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨", - "x-typia-required": true, - "x-typia-optional": false - }, - "receiptUrl": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "company", - "number", - "installmentPlanMonths", - "isInterestFree", - "approveNo", - "useCardPoint", - "cardType", - "ownerType", - "acquireStatus", - "receiptUrl" - ], - "description": "카드 정보.", - "x-typia-jsDocTags": [] - }, - "discount": { - "type": "object", - "properties": { - "amount": { - "description": "카드사의 즉시 할인 프로모션을 적용한 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - } - }, - "nullable": true, - "required": [ - "amount" - ], - "description": "카드사의 즉시 할인 프로모션 정보.", - "x-typia-jsDocTags": [] - }, - "easyPay": { - "type": "string", - "enum": [ - "토스결제", - "페이코", - "삼성페이" - ], - "nullable": true, - "description": "간편결제로 결제한 경우 간편결제 타입 정보.", - "x-typia-required": true, - "x-typia-optional": false - }, - "method": { - "type": "string", - "enum": [ - "카드" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL", - "BILLING" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "card", - "discount", - "easyPay", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "giftCertificate": { - "type": "object", - "properties": { - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETE", - "INCOMPLETE" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "approveNo", - "settlementStatus" - ], - "description": "상품권 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "상품권" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "giftCertificate", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "상품권 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "mobilePhone": { - "type": "object", - "properties": { - "carrier": { - "description": "통신사.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerMobilePhone": { - "description": "고객 휴대폰 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "carrier", - "customerMobilePhone", - "settlementStatus" - ], - "description": "휴대폰 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "휴대폰" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "mobilePhone", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "휴대폰 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "transfer": { - "type": "object", - "properties": { - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "이체 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "bank", - "settlementStatus" - ], - "description": "계좌 이체 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "계좌이체" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "transfer", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "계좌 이체 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "secret": { - "description": "가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "virtualAccount": { - "type": "object", - "properties": { - "accountNumber": { - "description": "계좌 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "accountType": { - "type": "string", - "enum": [ - "일반", - "고정" - ], - "description": "가상 계좌 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerName": { - "description": "고객 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "dueDate": { - "description": "입금 기한.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date" - }, - "expired": { - "type": "boolean", - "description": "가상 계좌 만료 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - }, - "refundStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "NONE", - "FAILED", - "PENDING", - "PARTIAL_FAILED" - ], - "description": "환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "accountNumber", - "accountType", - "bank", - "customerName", - "dueDate", - "expired", - "settlementStatus", - "refundStatus" - ], - "description": "가상 계좌 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "가상계좌" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "secret", - "virtualAccount", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - ], - "description": "결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의 \n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "간편 결제에 등록한 수단으로 결제하기.\n\n`billing.pay` 는 간편 결제에 등록한 수단으로 결제를 진행하고자 할 때 호출하는 API\n함수이다.\n\n그리고 `billing.pay` 는 결제 수단 중 유일하게, 클라이언트 어플리케이션이 토스\n페이먼츠가 제공하는 결제 창을 사용할 수 없어, 귀하의 백엔드 서버가 토스 페이먼츠의\nAPI 함수를 직접 호출해야 하는 경우에 해당한다. 따라서 간편 결제에 관련하여 토스\n페이먼츠와 연동하는 백엔드 서버 및 프론트 어플리케이션을 개발할 때, 반드시 이 상황에\n대한 별도의 설계 및 개발이 필요하니, 이 점을 염두에 두기 바란다.\n\n더하여 `billing.pay` 는 철저히 귀사 백엔드 서버의 판단 아래 호출되는 API 함수인지라,\n이를 통하여 이루어지는 결제는 일절 {@link payments.approve } 가 필요 없다. 다만\n`billing.pay` 는 이처럼 부차적인 승인 과정 필요없이 그 즉시로 결제가 완성되니, 이를\n호출하는 상황에 대하여 세심히 주의를 기울일 필요가 있다" - }, - { - "method": "post", - "path": "/v1/cash-receipts", - "name": "v1_cash_receipts_post", - "parameters": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류.", - "x-typia-required": true, - "x-typia-optional": false - }, - "paymentKey": { - "description": "귀속 결제의 {@link ITossPayment.paymentKey }.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문의 식별자 ID.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "registrationNumber": { - "description": "현금 영수증 발급을 위한 개인 식별 번호.\n\n현금 영수증의 종류에 따라 휴대폰 번호나 주민등록번호 또는 사업자등록번호 및 \n카드 번호를 입력할 수 있다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "description": "현금 영수증을 발행할 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 금액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "businessNumber": { - "description": "사업자 등록번호.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - } - }, - "required": [ - "type", - "paymentKey", - "orderId", - "orderName", - "registrationNumber", - "amount" - ], - "description": "현금 영수증 입력 정보.", - "x-typia-jsDocTags": [] - } - ], - "output": { - "type": "object", - "properties": { - "receiptKey": { - "description": "현금 영수증의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "orderId": { - "description": "주문의 식별자 ID.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "approvalNumber": { - "description": "현금 영수증 승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "approvedAt": { - "description": "현금 영수증 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "canceledAt": { - "description": "현금 영수증 취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "receiptUrl": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "receiptKey", - "type", - "orderId", - "orderName", - "approvalNumber", - "approvedAt", - "canceledAt", - "receiptUrl" - ], - "description": "현금 영수증 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "현금 영수증 발행하기." - }, - { - "method": "post", - "path": "/v1/cash-receipts/{receiptKey}/cancel", - "name": "v1_cash_receipts_cancel_postByReceiptkey", - "parameters": [ - { - "type": "string", - "description": "현금 영수증의 " - }, - { - "type": "object", - "properties": { - "amount": { - "description": "취소 금액.\n\n미 입력시 현금 영수증에 기재된 {@link ITossCashReceipt.amount 총액}이 취소됨.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - } - }, - "description": "현금 영수증 취소 입력 정보.", - "x-typia-jsDocTags": [] - } - ], - "output": { - "type": "object", - "properties": { - "receiptKey": { - "description": "현금 영수증의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "orderId": { - "description": "주문의 식별자 ID.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "approvalNumber": { - "description": "현금 영수증 승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "approvedAt": { - "description": "현금 영수증 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "canceledAt": { - "description": "현금 영수증 취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "receiptUrl": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "receiptKey", - "type", - "orderId", - "orderName", - "approvalNumber", - "approvedAt", - "canceledAt", - "receiptUrl" - ], - "description": "현금 영수증 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "현금 영수증 취소하기." - }, - { - "method": "post", - "path": "/internal/webhook", - "name": "internal_webhook_post", - "parameters": [ - { - "type": "object", - "properties": { - "eventType": { - "type": "string", - "enum": [ - "PAYMENT_STATUS_CHANGED" - ], - "description": "이벤트 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "data": { - "type": "object", - "properties": { - "paymentKey": { - "description": "{@link ITossPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED" - ], - "description": "결제 상태.\n\n - DONE: 결제 완료\n - CANCELED: 결제가 취소됨\n - PARTIAL_CANCELED: 결제가 부분 취소됨\n - WAITING_FOR_DEPOSIT: 입금 대기 중", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "paymentKey", - "orderId", - "status" - ], - "description": "웹훅 이벤트 데이터.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "eventType", - "data" - ], - "description": "웹훅 이벤트 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - ], - "description": "웹훅 이벤트 더미 리스너.\n\n`internal.webhook` 은 실제 토스 페이먼츠의 결제 서버에는 존재하지 않는 API 로써,\n`fake-toss-payments-server` 의 {@link Configuration.WEBHOOK_URL } 에 아무런 URL 을\n설정하지 않으면, `fake-toss-payments-server` 로부터 발생하는 모든 종류의 웹훅\n이벤트는 이 곳으로 전달되어 무의미하게 사라진다.\n\n따라서 `fake-toss-payments-server` 를 사용하여 토스 페이먼츠 서버와의 연동을 미리\n검증코자 할 때는, 반드시 {@link Configuration.WEBHOOK_URL } 를 설정하여 웹훅\n이벤트가 귀하의 백엔드 서버로 제대로 전달되도록 하자." - }, - { - "method": "get", - "path": "/internal/{paymentKey}/deposit", - "name": "internal_deposit_getByPaymentkey", - "parameters": [ - { - "type": "string", - "description": "대상 가상 계좌 결제 정보의 " - } - ], - "output": { - "oneOf": [ - { - "type": "object", - "properties": { - "card": { - "type": "object", - "properties": { - "company": { - "description": "카드사 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "[0-9]{16}" - }, - "installmentPlanMonths": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "isInterestFree": { - "type": "boolean", - "description": "무이자 할부 적용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "useCardPoint": { - "type": "boolean", - "description": "카드 포인트 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cardType": { - "type": "string", - "enum": [ - "신용", - "체크", - "기프트" - ], - "description": "카드 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "ownerType": { - "type": "string", - "enum": [ - "개인", - "법인" - ], - "description": "카드의 소유자 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "acquireStatus": { - "type": "string", - "enum": [ - "READY", - "CANCELED", - "REQUESTED", - "COMPLETED", - "CANCEL_REQUESTED" - ], - "description": "카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨", - "x-typia-required": true, - "x-typia-optional": false - }, - "receiptUrl": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "company", - "number", - "installmentPlanMonths", - "isInterestFree", - "approveNo", - "useCardPoint", - "cardType", - "ownerType", - "acquireStatus", - "receiptUrl" - ], - "description": "카드 정보.", - "x-typia-jsDocTags": [] - }, - "discount": { - "type": "object", - "properties": { - "amount": { - "description": "카드사의 즉시 할인 프로모션을 적용한 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - } - }, - "nullable": true, - "required": [ - "amount" - ], - "description": "카드사의 즉시 할인 프로모션 정보.", - "x-typia-jsDocTags": [] - }, - "easyPay": { - "type": "string", - "enum": [ - "토스결제", - "페이코", - "삼성페이" - ], - "nullable": true, - "description": "간편결제로 결제한 경우 간편결제 타입 정보.", - "x-typia-required": true, - "x-typia-optional": false - }, - "method": { - "type": "string", - "enum": [ - "카드" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL", - "BILLING" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "card", - "discount", - "easyPay", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "giftCertificate": { - "type": "object", - "properties": { - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETE", - "INCOMPLETE" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "approveNo", - "settlementStatus" - ], - "description": "상품권 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "상품권" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "giftCertificate", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "상품권 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "mobilePhone": { - "type": "object", - "properties": { - "carrier": { - "description": "통신사.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerMobilePhone": { - "description": "고객 휴대폰 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "carrier", - "customerMobilePhone", - "settlementStatus" - ], - "description": "휴대폰 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "휴대폰" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "mobilePhone", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "휴대폰 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "transfer": { - "type": "object", - "properties": { - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "이체 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "bank", - "settlementStatus" - ], - "description": "계좌 이체 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "계좌이체" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "transfer", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "계좌 이체 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "secret": { - "description": "가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "virtualAccount": { - "type": "object", - "properties": { - "accountNumber": { - "description": "계좌 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "accountType": { - "type": "string", - "enum": [ - "일반", - "고정" - ], - "description": "가상 계좌 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerName": { - "description": "고객 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "dueDate": { - "description": "입금 기한.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date" - }, - "expired": { - "type": "boolean", - "description": "가상 계좌 만료 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - }, - "refundStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "NONE", - "FAILED", - "PENDING", - "PARTIAL_FAILED" - ], - "description": "환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "accountNumber", - "accountType", - "bank", - "customerName", - "dueDate", - "expired", - "settlementStatus", - "refundStatus" - ], - "description": "가상 계좌 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "가상계좌" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "secret", - "virtualAccount", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - ], - "description": "결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의 \n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "가상 계좌에 입금하기.\n\n`internal.virtual_accounts.deposit` 은 실제 토스 페이먼츠의 결제 서버에는 존재하지\n않는 API 로써, 가상 계좌 결제를 신청한 고객이, 이후 가상 계좌에 목표 금액을 입금하는\n상황을 시뮬레이션할 수 있는 함수이다.\n\n즉 `internal.virtual_accounts.deposit` 는 고객이 스스로에게 가상으로 발급된 계좌에\n입금을 하고, 그에 따라 토스 페이먼츠 서버에서 webhook 이벤트가 발생하여 이를 귀하의\n백엔드 서버로 전송하는 일련의 상황을 테스트하기 위한 함수인 셈이다." - }, - { - "method": "get", - "path": "/v1/payments/{paymentKey}", - "name": "v1_payments_getByPaymentkey", - "parameters": [ - { - "type": "string", - "description": "결제 정보의 " - } - ], - "output": { - "oneOf": [ - { - "type": "object", - "properties": { - "card": { - "type": "object", - "properties": { - "company": { - "description": "카드사 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "[0-9]{16}" - }, - "installmentPlanMonths": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "isInterestFree": { - "type": "boolean", - "description": "무이자 할부 적용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "useCardPoint": { - "type": "boolean", - "description": "카드 포인트 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cardType": { - "type": "string", - "enum": [ - "신용", - "체크", - "기프트" - ], - "description": "카드 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "ownerType": { - "type": "string", - "enum": [ - "개인", - "법인" - ], - "description": "카드의 소유자 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "acquireStatus": { - "type": "string", - "enum": [ - "READY", - "CANCELED", - "REQUESTED", - "COMPLETED", - "CANCEL_REQUESTED" - ], - "description": "카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨", - "x-typia-required": true, - "x-typia-optional": false - }, - "receiptUrl": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "company", - "number", - "installmentPlanMonths", - "isInterestFree", - "approveNo", - "useCardPoint", - "cardType", - "ownerType", - "acquireStatus", - "receiptUrl" - ], - "description": "카드 정보.", - "x-typia-jsDocTags": [] - }, - "discount": { - "type": "object", - "properties": { - "amount": { - "description": "카드사의 즉시 할인 프로모션을 적용한 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - } - }, - "nullable": true, - "required": [ - "amount" - ], - "description": "카드사의 즉시 할인 프로모션 정보.", - "x-typia-jsDocTags": [] - }, - "easyPay": { - "type": "string", - "enum": [ - "토스결제", - "페이코", - "삼성페이" - ], - "nullable": true, - "description": "간편결제로 결제한 경우 간편결제 타입 정보.", - "x-typia-required": true, - "x-typia-optional": false - }, - "method": { - "type": "string", - "enum": [ - "카드" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL", - "BILLING" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "card", - "discount", - "easyPay", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "giftCertificate": { - "type": "object", - "properties": { - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETE", - "INCOMPLETE" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "approveNo", - "settlementStatus" - ], - "description": "상품권 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "상품권" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "giftCertificate", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "상품권 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "mobilePhone": { - "type": "object", - "properties": { - "carrier": { - "description": "통신사.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerMobilePhone": { - "description": "고객 휴대폰 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "carrier", - "customerMobilePhone", - "settlementStatus" - ], - "description": "휴대폰 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "휴대폰" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "mobilePhone", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "휴대폰 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "transfer": { - "type": "object", - "properties": { - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "이체 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "bank", - "settlementStatus" - ], - "description": "계좌 이체 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "계좌이체" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "transfer", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "계좌 이체 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "secret": { - "description": "가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "virtualAccount": { - "type": "object", - "properties": { - "accountNumber": { - "description": "계좌 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "accountType": { - "type": "string", - "enum": [ - "일반", - "고정" - ], - "description": "가상 계좌 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerName": { - "description": "고객 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "dueDate": { - "description": "입금 기한.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date" - }, - "expired": { - "type": "boolean", - "description": "가상 계좌 만료 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - }, - "refundStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "NONE", - "FAILED", - "PENDING", - "PARTIAL_FAILED" - ], - "description": "환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "accountNumber", - "accountType", - "bank", - "customerName", - "dueDate", - "expired", - "settlementStatus", - "refundStatus" - ], - "description": "가상 계좌 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "가상계좌" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "secret", - "virtualAccount", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - ], - "description": "결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의 \n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "결제 정보 조회하기.\n\n`payments.at` 은 결제 정보를 조회하는 함수이다.\n\n주로 클라이언트 어플리케이션이 토스 페이먼츠가 자체적으로 제공하는 결제 창을 사용하는\n경우, 그래서 프론트 어플리케이션이 귀하의 백엔드 서버에 `paymentKey` 등 극히 일부의\n식별자 정보만을 전달해주어, 상세 결제 정보가 필요할 때 사용한다.\n\n참고로 토스 페이먼츠는 다른 결제 PG 사들과 다르게, 클라이언트 어플리케이션에서 토스\n페이먼츠의 결제 창을 이용하여 진행한 결제가 바로 확정되는 것은 아니다. 귀사의 백엔드\n서버가 현재의 `payments.at` 을 통하여 해당 결제 정보를 확인하고, {@link approve } 를\n호출하여 직접 승인하기 전까지, 해당 결제는 확정되지 않으니, 이 점에 유의하기 바란다." - }, - { - "method": "post", - "path": "/v1/payments/{paymentKey}", - "name": "v1_payments_postByPaymentkey", - "parameters": [ - { - "type": "string", - "description": "대상 결제의 " - }, - { - "type": "object", - "properties": { - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - } - }, - "required": [ - "orderId", - "amount" - ], - "description": "결제 승인 정보.", - "x-typia-jsDocTags": [] - } - ], - "output": { - "oneOf": [ - { - "type": "object", - "properties": { - "card": { - "type": "object", - "properties": { - "company": { - "description": "카드사 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "[0-9]{16}" - }, - "installmentPlanMonths": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "isInterestFree": { - "type": "boolean", - "description": "무이자 할부 적용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "useCardPoint": { - "type": "boolean", - "description": "카드 포인트 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cardType": { - "type": "string", - "enum": [ - "신용", - "체크", - "기프트" - ], - "description": "카드 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "ownerType": { - "type": "string", - "enum": [ - "개인", - "법인" - ], - "description": "카드의 소유자 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "acquireStatus": { - "type": "string", - "enum": [ - "READY", - "CANCELED", - "REQUESTED", - "COMPLETED", - "CANCEL_REQUESTED" - ], - "description": "카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨", - "x-typia-required": true, - "x-typia-optional": false - }, - "receiptUrl": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "company", - "number", - "installmentPlanMonths", - "isInterestFree", - "approveNo", - "useCardPoint", - "cardType", - "ownerType", - "acquireStatus", - "receiptUrl" - ], - "description": "카드 정보.", - "x-typia-jsDocTags": [] - }, - "discount": { - "type": "object", - "properties": { - "amount": { - "description": "카드사의 즉시 할인 프로모션을 적용한 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - } - }, - "nullable": true, - "required": [ - "amount" - ], - "description": "카드사의 즉시 할인 프로모션 정보.", - "x-typia-jsDocTags": [] - }, - "easyPay": { - "type": "string", - "enum": [ - "토스결제", - "페이코", - "삼성페이" - ], - "nullable": true, - "description": "간편결제로 결제한 경우 간편결제 타입 정보.", - "x-typia-required": true, - "x-typia-optional": false - }, - "method": { - "type": "string", - "enum": [ - "카드" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL", - "BILLING" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "card", - "discount", - "easyPay", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "giftCertificate": { - "type": "object", - "properties": { - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETE", - "INCOMPLETE" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "approveNo", - "settlementStatus" - ], - "description": "상품권 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "상품권" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "giftCertificate", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "상품권 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "mobilePhone": { - "type": "object", - "properties": { - "carrier": { - "description": "통신사.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerMobilePhone": { - "description": "고객 휴대폰 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "carrier", - "customerMobilePhone", - "settlementStatus" - ], - "description": "휴대폰 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "휴대폰" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "mobilePhone", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "휴대폰 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "transfer": { - "type": "object", - "properties": { - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "이체 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "bank", - "settlementStatus" - ], - "description": "계좌 이체 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "계좌이체" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "transfer", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "계좌 이체 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "secret": { - "description": "가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "virtualAccount": { - "type": "object", - "properties": { - "accountNumber": { - "description": "계좌 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "accountType": { - "type": "string", - "enum": [ - "일반", - "고정" - ], - "description": "가상 계좌 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerName": { - "description": "고객 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "dueDate": { - "description": "입금 기한.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date" - }, - "expired": { - "type": "boolean", - "description": "가상 계좌 만료 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - }, - "refundStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "NONE", - "FAILED", - "PENDING", - "PARTIAL_FAILED" - ], - "description": "환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "accountNumber", - "accountType", - "bank", - "customerName", - "dueDate", - "expired", - "settlementStatus", - "refundStatus" - ], - "description": "가상 계좌 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "가상계좌" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "secret", - "virtualAccount", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - ], - "description": "결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의 \n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "결제 승인하기.\n\n토스 페이먼츠는 귀사의 백엔드에서 일어난 결제가 아닌 프론트 어플리케이션의 결제 창에서\n이루어진 결제의 경우, 해당 서비스으 백엔드 서버로부터 결제를 승인받기 전까지, 이를\n확정하지 않는다. `payments.approve` 는 바로 이러한 상황에서, 해당 결제를 승인해주는\n함수이다.\n\n만일 귀하가 `fake-toss-payments-server` 를 이용하여 결제를 시뮬레이션하는 경우라면,\n결제 관련 API 를 호출함에 있어 {@link ITossCardPayment.IStore.__approved } 내지\n{@link ITossVirtualAccountPayment.IStore.__approved } 를 `false` 로 함으로써, 별도\n승인이 필요한 이러한 상황을 시뮬레이션 할 수 있다." - }, - { - "method": "post", - "path": "/v1/payments/key-in", - "name": "v1_payments_key_in_post", - "parameters": [ - { - "type": "object", - "properties": { - "method": { - "type": "string", - "enum": [ - "card" - ], - "description": "결제 수단이 신용 카드임을 의미.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cardNumber": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "[0-9]{16}" - }, - "cardExpirationYear": { - "description": "카드 만료 년도 (2 자리).", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "\\d{2}" - }, - "cardExpirationMonth": { - "description": "카드 만료 월 (2 자리).", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^(0[1-9]|1[012])$" - }, - "cardPassword": { - "description": "카드 비밀번호.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "cardInstallmentPlan": { - "description": "할부 개월 수.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "amount": { - "description": "지불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세금 총액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customerBirthday": { - "description": "고객의 생년월일.\n\n표기 형식 YYMMDD.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "pattern": "^([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$" - }, - "customerEmail": { - "description": "고객의 이메일.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "format": "email" - }, - "vbv": { - "type": "object", - "properties": { - "cavv": { - "description": "3D Secure 인증 세션에 대한 인증 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "xid": { - "description": "트랜잭션 ID.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "eci": { - "description": "3DS 인증 결과에 대한 코드 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "cavv", - "xid", - "eci" - ], - "x-typia-jsDocTags": [] - }, - "__approved": { - "type": "boolean", - "description": "결제 승인 여부.\n\n오직 가짜 페이먼츠 서버 `fake-toss-payments-server` 에서만 사용되는 값으로써, \n결제 승인을 고의로 지연시키거나 할 때 사용된다. 이 값을 `false` 로 하면, 프론트 \n어플리케이션이 토스 페이먼츠가 제공해주는 결제 창을 사용하여 결제를 진행하는 \n상황을 시뮬레이션할 수 있다.\n\n본디 토스 페이먼츠 서버는 프론트 어플리케이션에서 백엔드 서버를 거치지 않고,\n토스 페이먼츠가 제공해주는 결제 창을 이용하여 직접 결제를 요청하는 경우, \n백엔드에서 이를 별도 {@link functional.payments.approve 승인} 처리해주기 전까지 \n정식 결제로 인청치 아니한다.\n\n반면 백엔드 서버에서 토스 페이먼츠 서버의 API 를 호출하는 경우, 토스 페이먼츠는\n이를 그 즉시로 승인해주기, `fake-toss-payments-server` 에서 별도의 승인 처리가\n필요한 상황을 시뮬레이션하기 위해서는 이러한 속성이 필요한 것.", - "x-typia-required": false, - "x-typia-optional": true - } - }, - "required": [ - "method", - "cardNumber", - "cardExpirationYear", - "cardExpirationMonth", - "amount", - "orderId" - ], - "description": "신용 카드를 이용한 결제 신청 정보.", - "x-typia-jsDocTags": [] - } - ], - "output": { - "type": "object", - "properties": { - "card": { - "type": "object", - "properties": { - "company": { - "description": "카드사 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "[0-9]{16}" - }, - "installmentPlanMonths": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "isInterestFree": { - "type": "boolean", - "description": "무이자 할부 적용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "useCardPoint": { - "type": "boolean", - "description": "카드 포인트 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cardType": { - "type": "string", - "enum": [ - "신용", - "체크", - "기프트" - ], - "description": "카드 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "ownerType": { - "type": "string", - "enum": [ - "개인", - "법인" - ], - "description": "카드의 소유자 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "acquireStatus": { - "type": "string", - "enum": [ - "READY", - "CANCELED", - "REQUESTED", - "COMPLETED", - "CANCEL_REQUESTED" - ], - "description": "카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨", - "x-typia-required": true, - "x-typia-optional": false - }, - "receiptUrl": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "company", - "number", - "installmentPlanMonths", - "isInterestFree", - "approveNo", - "useCardPoint", - "cardType", - "ownerType", - "acquireStatus", - "receiptUrl" - ], - "description": "카드 정보.", - "x-typia-jsDocTags": [] - }, - "discount": { - "type": "object", - "properties": { - "amount": { - "description": "카드사의 즉시 할인 프로모션을 적용한 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - } - }, - "nullable": true, - "required": [ - "amount" - ], - "description": "카드사의 즉시 할인 프로모션 정보.", - "x-typia-jsDocTags": [] - }, - "easyPay": { - "type": "string", - "enum": [ - "토스결제", - "페이코", - "삼성페이" - ], - "nullable": true, - "description": "간편결제로 결제한 경우 간편결제 타입 정보.", - "x-typia-required": true, - "x-typia-optional": false - }, - "method": { - "type": "string", - "enum": [ - "카드" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL", - "BILLING" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "card", - "discount", - "easyPay", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "카드로 결제하기.\n\n`payments.key_in` 은 카드를 이용한 결제를 할 때 호출되는 API 함수이다.\n\n참고로 `payments.key_in` 는 클라이언트 어플리케이션이 토스 페이먼츠가 자체적으로\n제공하는 결제 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는\n일은 없을 것이다. 다만, 고객이 카드를 통하여 결제하는 상황을 시뮬레이션하기 위하여,\n테스트 자동화 프로그램 수준에서 사용될 수는 있다.\n\n그리고 귀하의 백엔드 서버가 `payments.key-in` 을 직접 호출하는 경우, 토스 페이먼츠\n서버는 이를 완전히 승인된 결제로 보고 바로 확정한다. 때문에 `payments.key-in` 을\n직접 호출하는 경우, 토스 페이먼츠의 결제 창을 이용하여 별도의 {@link approve } 가\n필요한 때 대비, 훨씬 더 세심한 주의가 요구된다.\n\n더하여 만약 귀하의 백엔드 서버가 `fake-toss-payments-server` 를 이용하여 고객의\n카드 결제를 시뮬레이션하는 경우, {@link ITossCardPayment.IStore.__approved } 값을\n`false` 로 하여 카드 결제의 확정을 고의로 회피할 수 있다. 이를 통하여 토스\n페이먼츠의 결제 창을 이용한 카드 결제의 경우, 별도의 {@link approve } 가 필요한\n상황을 시뮬레이션 할 수 있다." - }, - { - "method": "post", - "path": "/v1/payments/{paymentKey}/cancel", - "name": "v1_payments_cancel_postByPaymentkey", - "parameters": [ - { - "type": "string", - "description": "결제 정보의 " - }, - { - "type": "object", - "properties": { - "paymentKey": { - "description": "{@link ITossPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "refundReceiveAccount": { - "type": "object", - "properties": { - "bank": { - "description": "은행 정보.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "accountNumber": { - "description": "계좌 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^[0-9]{0,20}$" - }, - "holderName": { - "description": "예금주.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "required": [ - "bank", - "accountNumber", - "holderName" - ], - "x-typia-jsDocTags": [] - }, - "taxAmount": { - "description": "과세 처리 금액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리 금액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - } - }, - "required": [ - "paymentKey", - "cancelReason" - ], - "description": "결제 취소 신청 정보.", - "x-typia-jsDocTags": [] - } - ], - "output": { - "oneOf": [ - { - "type": "object", - "properties": { - "card": { - "type": "object", - "properties": { - "company": { - "description": "카드사 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "[0-9]{16}" - }, - "installmentPlanMonths": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "isInterestFree": { - "type": "boolean", - "description": "무이자 할부 적용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "useCardPoint": { - "type": "boolean", - "description": "카드 포인트 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cardType": { - "type": "string", - "enum": [ - "신용", - "체크", - "기프트" - ], - "description": "카드 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "ownerType": { - "type": "string", - "enum": [ - "개인", - "법인" - ], - "description": "카드의 소유자 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "acquireStatus": { - "type": "string", - "enum": [ - "READY", - "CANCELED", - "REQUESTED", - "COMPLETED", - "CANCEL_REQUESTED" - ], - "description": "카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨", - "x-typia-required": true, - "x-typia-optional": false - }, - "receiptUrl": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - } - }, - "required": [ - "company", - "number", - "installmentPlanMonths", - "isInterestFree", - "approveNo", - "useCardPoint", - "cardType", - "ownerType", - "acquireStatus", - "receiptUrl" - ], - "description": "카드 정보.", - "x-typia-jsDocTags": [] - }, - "discount": { - "type": "object", - "properties": { - "amount": { - "description": "카드사의 즉시 할인 프로모션을 적용한 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - } - }, - "nullable": true, - "required": [ - "amount" - ], - "description": "카드사의 즉시 할인 프로모션 정보.", - "x-typia-jsDocTags": [] - }, - "easyPay": { - "type": "string", - "enum": [ - "토스결제", - "페이코", - "삼성페이" - ], - "nullable": true, - "description": "간편결제로 결제한 경우 간편결제 타입 정보.", - "x-typia-required": true, - "x-typia-optional": false - }, - "method": { - "type": "string", - "enum": [ - "카드" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL", - "BILLING" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "card", - "discount", - "easyPay", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "giftCertificate": { - "type": "object", - "properties": { - "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETE", - "INCOMPLETE" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "approveNo", - "settlementStatus" - ], - "description": "상품권 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "상품권" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "giftCertificate", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "상품권 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "mobilePhone": { - "type": "object", - "properties": { - "carrier": { - "description": "통신사.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerMobilePhone": { - "description": "고객 휴대폰 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "carrier", - "customerMobilePhone", - "settlementStatus" - ], - "description": "휴대폰 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "휴대폰" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "mobilePhone", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "휴대폰 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "transfer": { - "type": "object", - "properties": { - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "이체 상태.", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "bank", - "settlementStatus" - ], - "description": "계좌 이체 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "계좌이체" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "transfer", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "계좌 이체 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - { - "type": "object", - "properties": { - "secret": { - "description": "가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "virtualAccount": { - "type": "object", - "properties": { - "accountNumber": { - "description": "계좌 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "accountType": { - "type": "string", - "enum": [ - "일반", - "고정" - ], - "description": "가상 계좌 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerName": { - "description": "고객 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "dueDate": { - "description": "입금 기한.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date" - }, - "expired": { - "type": "boolean", - "description": "가상 계좌 만료 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - }, - "refundStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "NONE", - "FAILED", - "PENDING", - "PARTIAL_FAILED" - ], - "description": "환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "accountNumber", - "accountType", - "bank", - "customerName", - "dueDate", - "expired", - "settlementStatus", - "refundStatus" - ], - "description": "가상 계좌 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "가상계좌" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "secret", - "virtualAccount", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - } - ], - "description": "결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의 \n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "결제 취소하기.\n\n`payments.cancel` 은 결제를 취소하는 API 이다.\n\n결제 취소 입력 정보 {@link ITossPaymentCancel.IStore } 에는 취소 사유를 비롯하여,\n고객에게 환불해 줄 금액과 부가세 및 필요시 환불 계좌 정보 등을 입력하게 되어있다." - }, - { - "method": "post", - "path": "/v1/virtual-accounts", - "name": "v1_virtual_accounts_post", - "parameters": [ - { - "type": "object", - "properties": { - "method": { - "type": "string", - "enum": [ - "virtual-account" - ], - "description": "결제 수단이 가상 계좌임을 의미.", - "x-typia-required": true, - "x-typia-optional": false - }, - "orderId": { - "description": "주문 식별자 번호.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerName": { - "description": "고객 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "__approved": { - "type": "boolean", - "description": "결제 승인 여부.\n\n오직 가짜 페이먼츠 서버 `fake-toss-payments-server` 에서만 사용되는 값으로써, \n결제 승인을 고의로 지연시키거나 할 때 사용된다. 이 값을 `false` 로 하면, 프론트 \n어플리케이션이 토스 페이먼츠가 제공해주는 결제 창을 사용하여 결제를 진행하는 \n상황을 시뮬레이션할 수 있다.\n\n본디 토스 페이먼츠 서버는 프론트 어플리케이션에서 백엔드 서버를 거치지 않고,\n토스 페이먼츠가 제공해주는 결제 창을 이용하여 직접 결제를 요청하는 경우, \n백엔드에서 이를 별도 {@link functional.payments.approve 승인} 처리해주기 전까지 \n정식 결제로 인청치 아니한다.\n\n반면 백엔드 서버에서 토스 페이먼츠 서버의 API 를 호출하는 경우, 토스 페이먼츠는\n이를 그 즉시로 승인해주기, `fake-toss-payments-server` 에서 별도의 승인 처리가\n필요한 상황을 시뮬레이션하기 위해서는 이러한 속성이 필요한 것.", - "x-typia-required": false, - "x-typia-optional": true - } - }, - "required": [ - "method", - "orderId", - "orderName", - "bank", - "customerName", - "amount" - ], - "description": "가상 계좌를 이용한 결제 신청 정보.", - "x-typia-jsDocTags": [] - } - ], - "output": { - "type": "object", - "properties": { - "secret": { - "description": "가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "virtualAccount": { - "type": "object", - "properties": { - "accountNumber": { - "description": "계좌 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "accountType": { - "type": "string", - "enum": [ - "일반", - "고정" - ], - "description": "가상 계좌 타입.", - "x-typia-required": true, - "x-typia-optional": false - }, - "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "customerName": { - "description": "고객 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "dueDate": { - "description": "입금 기한.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date" - }, - "expired": { - "type": "boolean", - "description": "가상 계좌 만료 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "settlementStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ], - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false - }, - "refundStatus": { - "type": "string", - "enum": [ - "COMPLETED", - "NONE", - "FAILED", - "PENDING", - "PARTIAL_FAILED" - ], - "description": "환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료", - "x-typia-required": true, - "x-typia-optional": false - } - }, - "required": [ - "accountNumber", - "accountType", - "bank", - "customerName", - "dueDate", - "expired", - "settlementStatus", - "refundStatus" - ], - "description": "가상 계좌 정보.", - "x-typia-jsDocTags": [] - }, - "method": { - "type": "string", - "enum": [ - "가상계좌" - ], - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false - }, - "type": { - "type": "string", - "enum": [ - "NORMAL" - ], - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false - }, - "status": { - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ], - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false - }, - "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "useEscrow": { - "type": "boolean", - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false - }, - "cultureExpense": { - "type": "boolean", - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false - }, - "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - }, - "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true - }, - "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "type": "object", - "properties": { - "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time" - } - }, - "required": [ - "cancelAmount", - "cancelReason", - "taxFreeAmount", - "taxAmount", - "refundableAmount", - "canceledAt" - ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "nullable": true - }, - "cashReceipt": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ], - "description": "현금 영수증의 종류." - }, - "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": true, - "required": [ - "type", - "amount", - "taxFreeAmount", - "issueNumber", - "receiptUrl" - ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] - } - }, - "required": [ - "secret", - "virtualAccount", - "method", - "type", - "status", - "mId", - "version", - "paymentKey", - "orderId", - "transactionKey", - "orderName", - "currency", - "totalAmount", - "balanceAmount", - "suppliedAmount", - "taxFreeAmount", - "vat", - "useEscrow", - "cultureExpense", - "requestedAt", - "approvedAt", - "cancels", - "cashReceipt" - ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "description": "가상 계좌로 결제 신청하기.\n\n`virtual_accounts.store` 는 고객이 결제 수단을 가상 계좌로 선택하는 경우에 호출되는\nAPI 함수이다. 물론 고객이 이처럼 가상 계좌를 선택한 경우, 고객이 지정된 계좌에 돈을\n입금하기 전까지는 결제가 마무리된 것이 아니기에, {@link ITossPayment.status } 값은\n`WAITING_FOR_DEPOSIT` 이 된다.\n\n참고로 `virtual_accounts.store` 는 클라이언트 어플리케이션이 토스 페이먼츠가\n자체적으로 제공하는 결제 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서\n호출하는 일은 없을 것이다. 다만, 고객이 가상 계좌로 결제를 진행하는 상황을\n시뮬레이션하기 위하여, 테스트 자동화 프로그램 수준에서 사용될 수는 있다.\n\n그리고 `virtual_accounts.store` 이후에 고객이 지정된 계좌에 금액을 입금하거든, 토스\n페이먼츠 서버로부터 웹훅 이벤트가 발생되어 귀하의 백엔드 서버로 전송된다. 만약 연동\n대상 토스 페이먼츠 서버가 실제가 아닌 `fake-toss-payments-server` 라면,\n{@link internal.virtual_accounts.deposit } 를 호출하여, 고객이 가상 계좌에 입금하는\n상황을 시뮬레이션 할 수 있다." - } - ], - "errors": [], - "options": { - "keyword": false, - "separate": null - } -} \ No newline at end of file +{"openapi":"3.0.3","functions":[{"method":"post","path":"/v1/billing/authorizations/card","name":"v1_billing_authorizations_card_post","parameters":[{"type":"object","properties":{"cardNumber":{"type":"string","pattern":"[0-9]{16}","title":"카드 번호","description":"카드 번호."},"cardExpirationYear":{"type":"string","pattern":"\\d{2}","title":"카드 만료 년도 (2 자리)","description":"카드 만료 년도 (2 자리)."},"cardExpirationMonth":{"type":"string","pattern":"^(0[1-9]|1[012])$","title":"카드 만료 월 (2 자리)","description":"카드 만료 월 (2 자리)."},"cardPassword":{"type":"string","title":"카드 비밀번호","description":"카드 비밀번호."},"customerBirthday":{"type":"string","pattern":"^([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$","title":"고객의 생년월일","description":"고객의 생년월일.\n\n표기 형식 YYMMDD."},"consumerName":{"type":"string","title":"고객의 이름","description":"고객의 이름."},"customerEmail":{"type":"string","format":"email","title":"고객의 이메일","description":"고객의 이메일."},"vbv":{"type":"object","properties":{"cavv":{"type":"string","title":"3D Secure 인증 세션에 대한 인증 값","description":"3D Secure 인증 세션에 대한 인증 값."},"xid":{"type":"string","title":"트랜잭션 ID","description":"트랜잭션 ID."},"eci":{"type":"string","title":"3DS 인증 결과에 대한 코드 값","description":"3DS 인증 결과에 대한 코드 값."}},"required":["cavv","xid","eci"],"title":"해외카드로 결제하는 경우 3DS 인증 적용을 위해 사용","description":"해외카드로 결제하는 경우 3DS 인증 적용을 위해 사용.\n\n3DS 인증 결과를 전송해야 하는 경우에만 필수."},"customerKey":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."}},"required":["cardNumber","cardExpirationYear","cardExpirationMonth","cardPassword","customerBirthday","customerKey"],"description":"간편 결제 카드 등록 정보."}],"output":{"type":"object","properties":{"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"billingKey":{"type":"string","title":"{@link ITossBilling} 의 식별자 키","description":"{@link ITossBilling} 의 식별자 키."},"method":{"type":"string","enum":["카드"],"title":"결제 수단","description":"결제 수단."},"cardCompany":{"type":"string","title":"카드사 이름","description":"카드사 이름."},"cardNumber":{"type":"string","pattern":"[0-9]{16}","title":"카드 번호","description":"카드 번호."},"authenticatedAt":{"type":"string","format":"date-time","title":"인증 일시","description":"인증 일시."},"customerKey":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."}},"required":["mId","billingKey","method","cardCompany","cardNumber","authenticatedAt","customerKey"],"description":"간편 결제 등록 수단 정보.\n\n`ITossBilling` 은 간편 결제 등록 수단을 형상화한 자료구조 인터페이스로써, 고객이 자신의\n신용 카드를 서버에 등록해두고, 매번 결제가 필요할 때마다 카드 정보를 반복 입려하는 일\n없이 간편하게 결제를 진행하고자 할 때 사용한다."},"description":"간편 결제 카드 등록하기.\n\n`billing.authorizations.card.create` 는 고객이 자신의 신록 카드를 서버에 등록해두고,\n매번 결제가 필요할 때마다 카드 정보를 반복 입력하는 일 없이 간편하게 결제를\n진행하고자 할 때, 호출되는 API 함수이다.\n\n참고로 `billing.authorizations.card.create` 는 클라이언트 어플리케이션이 토스\n페이먼츠가 제공하는 간편 결제 카드 등록 창을 사용하는 경우, 귀하의 백엔드 서버가 이를\n실 서비스에서 호출하는 일은 없을 것이다. 다만, 고객이 간편 결제 카드를 등록하는\n상황을 시뮬레이션하기 위하여, 테스트 자동화 프로그램 수준에서 사용될 수는 있다."},{"method":"post","path":"/v1/billing/authorizations/{billingKey}","name":"v1_billing_authorizations_postByBillingkey","parameters":[{"type":"string","description":" 대상 정보의 {@link ITossBilling.billingKey}"},{"type":"object","properties":{"customerKey":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."}},"required":["customerKey"],"description":"고객 식별자 정보."}],"output":{"type":"object","properties":{"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"billingKey":{"type":"string","title":"{@link ITossBilling} 의 식별자 키","description":"{@link ITossBilling} 의 식별자 키."},"method":{"type":"string","enum":["카드"],"title":"결제 수단","description":"결제 수단."},"cardCompany":{"type":"string","title":"카드사 이름","description":"카드사 이름."},"cardNumber":{"type":"string","pattern":"[0-9]{16}","title":"카드 번호","description":"카드 번호."},"authenticatedAt":{"type":"string","format":"date-time","title":"인증 일시","description":"인증 일시."},"customerKey":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."}},"required":["mId","billingKey","method","cardCompany","cardNumber","authenticatedAt","customerKey"],"description":"간편 결제 등록 수단 정보.\n\n`ITossBilling` 은 간편 결제 등록 수단을 형상화한 자료구조 인터페이스로써, 고객이 자신의\n신용 카드를 서버에 등록해두고, 매번 결제가 필요할 때마다 카드 정보를 반복 입려하는 일\n없이 간편하게 결제를 진행하고자 할 때 사용한다."},"description":"간편 결제로 등록한 수단 조회하기.\n\n`billing.authorizations.at` 은 고객이 간편 결제를 위하여 토스 페이먼츠 서버에\n등록한 결제 수단을 조회하는 함수이다.\n\n주로 클라이언트 어플리케이션이 토스 페이먼츠가 자체적으로 제공하는 결제 창을 사용하는\n경우, 그래서 프론트 어플리케이션이 귀하의 백엔드 서버에 `billingKey` 와` customerKey`\n만을 전달해주어, 상세 간편 결제 수단 정보가 필요할 때 사용한다."},{"method":"post","path":"/v1/billing/{billingKey}","name":"v1_billing_postByBillingkey","parameters":[{"type":"string","description":" 간편 결제에 등록한 수단의 {@link ITossBilling.billingKey}"},{"type":"object","properties":{"method":{"type":"string","enum":["billing"],"title":"결제 수단이 간편 결제임을 의미함","description":"결제 수단이 간편 결제임을 의미함."},"billingKey":{"type":"string","title":"{@link IPaymentStore} 의 식별자 키","description":"{@link IPaymentStore} 의 식별자 키."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"customerKey":{"type":"string","title":"고객 식별자 키","description":"고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."}},"required":["method","billingKey","orderId","amount","customerKey"],"description":"간편 결제를 이용한 결제 신청 정보."}],"output":{"oneOf":[{"type":"object","properties":{"card":{"type":"object","properties":{"company":{"type":"string","title":"카드사 이름","description":"카드사 이름."},"number":{"type":"string","pattern":"[0-9]{16}","title":"카드 번호","description":"카드 번호."},"installmentPlanMonths":{"type":"number","title":"할부 개월 수","description":"할부 개월 수."},"isInterestFree":{"type":"boolean","title":"무이자 할부 적용 여부","description":"무이자 할부 적용 여부."},"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"useCardPoint":{"type":"boolean","title":"카드 포인트 사용 여부","description":"카드 포인트 사용 여부."},"cardType":{"type":"string","enum":["신용","체크","기프트"],"title":"카드 타입","description":"카드 타입."},"ownerType":{"type":"string","enum":["개인","법인"],"title":"카드의 소유자 타입","description":"카드의 소유자 타입."},"acquireStatus":{"type":"string","enum":["READY","CANCELED","REQUESTED","COMPLETED","CANCEL_REQUESTED"],"title":"카드 결제의 매입 상태","description":"카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨"},"receiptUrl":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."}},"required":["company","number","installmentPlanMonths","isInterestFree","approveNo","useCardPoint","cardType","ownerType","acquireStatus","receiptUrl"],"description":"카드 정보."},"discount":{"type":"object","properties":{"amount":{"type":"number","title":"카드사의 즉시 할인 프로모션을 적용한 금액","description":"카드사의 즉시 할인 프로모션을 적용한 금액."}},"required":["amount"],"description":"카드사의 즉시 할인 프로모션 정보.","nullable":true,"title":"카드사의 즉시 할인 프로모션 정보"},"easyPay":{"type":"string","enum":["토스결제","페이코","삼성페이"],"nullable":true,"title":"간편결제로 결제한 경우 간편결제 타입 정보","description":"간편결제로 결제한 경우 간편결제 타입 정보."},"method":{"type":"string","enum":["카드"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL","BILLING"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["card","discount","easyPay","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"카드 결제 정보."},{"type":"object","properties":{"giftCertificate":{"type":"object","properties":{"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"settlementStatus":{"type":"string","enum":["COMPLETE","INCOMPLETE"],"title":"정산 상태","description":"정산 상태."}},"required":["approveNo","settlementStatus"],"description":"상품권 정보."},"method":{"type":"string","enum":["상품권"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["giftCertificate","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"상품권 결제 정보."},{"type":"object","properties":{"mobilePhone":{"type":"object","properties":{"carrier":{"type":"string","title":"통신사","description":"통신사."},"customerMobilePhone":{"type":"string","title":"고객 휴대폰 번호","description":"고객 휴대폰 번호."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."}},"required":["carrier","customerMobilePhone","settlementStatus"],"description":"휴대폰 정보."},"method":{"type":"string","enum":["휴대폰"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["mobilePhone","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"휴대폰 결제 정보."},{"type":"object","properties":{"transfer":{"type":"object","properties":{"bank":{"type":"string","title":"은행명","description":"은행명."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"이체 상태","description":"이체 상태."}},"required":["bank","settlementStatus"],"description":"계좌 이체 정보."},"method":{"type":"string","enum":["계좌이체"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["transfer","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"계좌 이체 결제 정보."},{"type":"object","properties":{"secret":{"type":"string","title":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값","description":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값."},"virtualAccount":{"type":"object","properties":{"accountNumber":{"type":"string","title":"계좌 번호","description":"계좌 번호."},"accountType":{"type":"string","enum":["일반","고정"],"title":"가상 계좌 타입","description":"가상 계좌 타입."},"bank":{"type":"string","title":"은행명","description":"은행명."},"customerName":{"type":"string","title":"고객 이름","description":"고객 이름."},"dueDate":{"type":"string","format":"date","title":"입금 기한","description":"입금 기한."},"expired":{"type":"boolean","title":"가상 계좌 만료 여부","description":"가상 계좌 만료 여부."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."},"refundStatus":{"type":"string","enum":["COMPLETED","NONE","FAILED","PENDING","PARTIAL_FAILED"],"title":"환불 처리 상태","description":"환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료"}},"required":["accountNumber","accountType","bank","customerName","dueDate","expired","settlementStatus","refundStatus"],"description":"가상 계좌 정보."},"method":{"type":"string","enum":["가상계좌"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["secret","virtualAccount","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"가상 계좌 결제 정보."}],"description":"결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```"},"description":"간편 결제에 등록한 수단으로 결제하기.\n\n`billing.pay` 는 간편 결제에 등록한 수단으로 결제를 진행하고자 할 때 호출하는 API\n함수이다.\n\n그리고 `billing.pay` 는 결제 수단 중 유일하게, 클라이언트 어플리케이션이 토스\n페이먼츠가 제공하는 결제 창을 사용할 수 없어, 귀하의 백엔드 서버가 토스 페이먼츠의\nAPI 함수를 직접 호출해야 하는 경우에 해당한다. 따라서 간편 결제에 관련하여 토스\n페이먼츠와 연동하는 백엔드 서버 및 프론트 어플리케이션을 개발할 때, 반드시 이 상황에\n대한 별도의 설계 및 개발이 필요하니, 이 점을 염두에 두기 바란다.\n\n더하여 `billing.pay` 는 철저히 귀사 백엔드 서버의 판단 아래 호출되는 API 함수인지라,\n이를 통하여 이루어지는 결제는 일절 {@link payments.approve} 가 필요 없다. 다만\n`billing.pay` 는 이처럼 부차적인 승인 과정 필요없이 그 즉시로 결제가 완성되니, 이를\n호출하는 상황에 대하여 세심히 주의를 기울일 필요가 있다"},{"method":"post","path":"/v1/cash-receipts","name":"v1_cash_receipts_post","parameters":[{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"title":"현금 영수증의 종류","description":"현금 영수증의 종류."},"paymentKey":{"type":"string","title":"귀속 결제의 {@link ITossPayment.paymentKey}","description":"귀속 결제의 {@link ITossPayment.paymentKey}."},"orderId":{"type":"string","title":"주문의 식별자 ID","description":"주문의 식별자 ID."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름."},"registrationNumber":{"type":"string","title":"현금 영수증 발급을 위한 개인 식별 번호","description":"현금 영수증 발급을 위한 개인 식별 번호.\n\n현금 영수증의 종류에 따라 휴대폰 번호나 주민등록번호 또는 사업자등록번호 및\n카드 번호를 입력할 수 있다."},"amount":{"type":"number","title":"현금 영수증을 발행할 금액","description":"현금 영수증을 발행할 금액."},"taxFreeAmount":{"type":"number","title":"면세 금액","description":"면세 금액."},"businessNumber":{"type":"string","title":"사업자 등록번호","description":"사업자 등록번호."}},"required":["type","paymentKey","orderId","orderName","registrationNumber","amount"],"description":"현금 영수증 입력 정보."}],"output":{"type":"object","properties":{"receiptKey":{"type":"string","title":"현금 영수증의 식별자 키","description":"현금 영수증의 식별자 키."},"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"orderId":{"type":"string","title":"주문의 식별자 ID","description":"주문의 식별자 ID."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름."},"approvalNumber":{"type":"string","title":"현금 영수증 승인 번호","description":"현금 영수증 승인 번호."},"approvedAt":{"type":"string","format":"date-time","title":"현금 영수증 승인 일시","description":"현금 영수증 승인 일시."},"canceledAt":{"type":"string","format":"date-time","nullable":true,"title":"현금 영수증 취소 일시","description":"현금 영수증 취소 일시."},"receiptUrl":{"type":"string","title":"영수증 URL","description":"영수증 URL."}},"required":["receiptKey","type","orderId","orderName","approvalNumber","approvedAt","canceledAt","receiptUrl"],"description":"현금 영수증 정보."},"description":"현금 영수증 발행하기."},{"method":"post","path":"/v1/cash-receipts/{receiptKey}/cancel","name":"v1_cash_receipts_cancel_postByReceiptkey","parameters":[{"type":"string","description":" 현금 영수증의 {@link ITossCashReceipt.receiptKey}"},{"type":"object","properties":{"amount":{"type":"number","title":"취소 금액","description":"취소 금액.\n\n미 입력시 현금 영수증에 기재된 {@link ITossCashReceipt.amount 총액}이 취소됨."}},"description":"현금 영수증 취소 입력 정보."}],"output":{"type":"object","properties":{"receiptKey":{"type":"string","title":"현금 영수증의 식별자 키","description":"현금 영수증의 식별자 키."},"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"orderId":{"type":"string","title":"주문의 식별자 ID","description":"주문의 식별자 ID."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름."},"approvalNumber":{"type":"string","title":"현금 영수증 승인 번호","description":"현금 영수증 승인 번호."},"approvedAt":{"type":"string","format":"date-time","title":"현금 영수증 승인 일시","description":"현금 영수증 승인 일시."},"canceledAt":{"type":"string","format":"date-time","nullable":true,"title":"현금 영수증 취소 일시","description":"현금 영수증 취소 일시."},"receiptUrl":{"type":"string","title":"영수증 URL","description":"영수증 URL."}},"required":["receiptKey","type","orderId","orderName","approvalNumber","approvedAt","canceledAt","receiptUrl"],"description":"현금 영수증 정보."},"description":"현금 영수증 취소하기."},{"method":"post","path":"/internal/webhook","name":"internal_webhook_post","parameters":[{"type":"object","properties":{"eventType":{"type":"string","enum":["PAYMENT_STATUS_CHANGED"],"title":"이벤트 타입","description":"이벤트 타입."},"data":{"type":"object","properties":{"paymentKey":{"type":"string","title":"{@link ITossPayment} 의 식별자 키","description":"{@link ITossPayment} 의 식별자 키."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"status":{"type":"string","enum":["WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED"],"title":"결제 상태","description":"결제 상태.\n\n - DONE: 결제 완료\n - CANCELED: 결제가 취소됨\n - PARTIAL_CANCELED: 결제가 부분 취소됨\n - WAITING_FOR_DEPOSIT: 입금 대기 중"}},"required":["paymentKey","orderId","status"],"description":"웹훅 이벤트 데이터."}},"required":["eventType","data"],"description":"웹훅 이벤트 정보."}],"description":"웹훅 이벤트 더미 리스너.\n\n`internal.webhook` 은 실제 토스 페이먼츠의 결제 서버에는 존재하지 않는 API 로써,\n`fake-toss-payments-server` 의 {@link Configuration.WEBHOOK_URL} 에 아무런 URL 을\n설정하지 않으면, `fake-toss-payments-server` 로부터 발생하는 모든 종류의 웹훅\n이벤트는 이 곳으로 전달되어 무의미하게 사라진다.\n\n따라서 `fake-toss-payments-server` 를 사용하여 토스 페이먼츠 서버와의 연동을 미리\n검증코자 할 때는, 반드시 {@link Configuration.WEBHOOK_URL} 를 설정하여 웹훅\n이벤트가 귀하의 백엔드 서버로 제대로 전달되도록 하자."},{"method":"put","path":"/internal/{paymentKey}/deposit","name":"internal_deposit_putByPaymentkey","parameters":[{"type":"string","description":" 대상 가상 계좌 결제 정보의 {@link ITossPayment.paymentKey}"}],"output":{"oneOf":[{"type":"object","properties":{"card":{"type":"object","properties":{"company":{"type":"string","title":"카드사 이름","description":"카드사 이름."},"number":{"type":"string","pattern":"[0-9]{16}","title":"카드 번호","description":"카드 번호."},"installmentPlanMonths":{"type":"number","title":"할부 개월 수","description":"할부 개월 수."},"isInterestFree":{"type":"boolean","title":"무이자 할부 적용 여부","description":"무이자 할부 적용 여부."},"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"useCardPoint":{"type":"boolean","title":"카드 포인트 사용 여부","description":"카드 포인트 사용 여부."},"cardType":{"type":"string","enum":["신용","체크","기프트"],"title":"카드 타입","description":"카드 타입."},"ownerType":{"type":"string","enum":["개인","법인"],"title":"카드의 소유자 타입","description":"카드의 소유자 타입."},"acquireStatus":{"type":"string","enum":["READY","CANCELED","REQUESTED","COMPLETED","CANCEL_REQUESTED"],"title":"카드 결제의 매입 상태","description":"카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨"},"receiptUrl":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."}},"required":["company","number","installmentPlanMonths","isInterestFree","approveNo","useCardPoint","cardType","ownerType","acquireStatus","receiptUrl"],"description":"카드 정보."},"discount":{"type":"object","properties":{"amount":{"type":"number","title":"카드사의 즉시 할인 프로모션을 적용한 금액","description":"카드사의 즉시 할인 프로모션을 적용한 금액."}},"required":["amount"],"description":"카드사의 즉시 할인 프로모션 정보.","nullable":true,"title":"카드사의 즉시 할인 프로모션 정보"},"easyPay":{"type":"string","enum":["토스결제","페이코","삼성페이"],"nullable":true,"title":"간편결제로 결제한 경우 간편결제 타입 정보","description":"간편결제로 결제한 경우 간편결제 타입 정보."},"method":{"type":"string","enum":["카드"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL","BILLING"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["card","discount","easyPay","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"카드 결제 정보."},{"type":"object","properties":{"giftCertificate":{"type":"object","properties":{"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"settlementStatus":{"type":"string","enum":["COMPLETE","INCOMPLETE"],"title":"정산 상태","description":"정산 상태."}},"required":["approveNo","settlementStatus"],"description":"상품권 정보."},"method":{"type":"string","enum":["상품권"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["giftCertificate","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"상품권 결제 정보."},{"type":"object","properties":{"mobilePhone":{"type":"object","properties":{"carrier":{"type":"string","title":"통신사","description":"통신사."},"customerMobilePhone":{"type":"string","title":"고객 휴대폰 번호","description":"고객 휴대폰 번호."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."}},"required":["carrier","customerMobilePhone","settlementStatus"],"description":"휴대폰 정보."},"method":{"type":"string","enum":["휴대폰"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["mobilePhone","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"휴대폰 결제 정보."},{"type":"object","properties":{"transfer":{"type":"object","properties":{"bank":{"type":"string","title":"은행명","description":"은행명."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"이체 상태","description":"이체 상태."}},"required":["bank","settlementStatus"],"description":"계좌 이체 정보."},"method":{"type":"string","enum":["계좌이체"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["transfer","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"계좌 이체 결제 정보."},{"type":"object","properties":{"secret":{"type":"string","title":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값","description":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값."},"virtualAccount":{"type":"object","properties":{"accountNumber":{"type":"string","title":"계좌 번호","description":"계좌 번호."},"accountType":{"type":"string","enum":["일반","고정"],"title":"가상 계좌 타입","description":"가상 계좌 타입."},"bank":{"type":"string","title":"은행명","description":"은행명."},"customerName":{"type":"string","title":"고객 이름","description":"고객 이름."},"dueDate":{"type":"string","format":"date","title":"입금 기한","description":"입금 기한."},"expired":{"type":"boolean","title":"가상 계좌 만료 여부","description":"가상 계좌 만료 여부."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."},"refundStatus":{"type":"string","enum":["COMPLETED","NONE","FAILED","PENDING","PARTIAL_FAILED"],"title":"환불 처리 상태","description":"환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료"}},"required":["accountNumber","accountType","bank","customerName","dueDate","expired","settlementStatus","refundStatus"],"description":"가상 계좌 정보."},"method":{"type":"string","enum":["가상계좌"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["secret","virtualAccount","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"가상 계좌 결제 정보."}],"description":"결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```"},"description":"가상 계좌에 입금하기.\n\n`internal.virtual_accounts.deposit` 은 실제 토스 페이먼츠의 결제 서버에는 존재하지\n않는 API 로써, 가상 계좌 결제를 신청한 고객이, 이후 가상 계좌에 목표 금액을 입금하는\n상황을 시뮬레이션할 수 있는 함수이다.\n\n즉 `internal.virtual_accounts.deposit` 는 고객이 스스로에게 가상으로 발급된 계좌에\n입금을 하고, 그에 따라 토스 페이먼츠 서버에서 webhook 이벤트가 발생하여 이를 귀하의\n백엔드 서버로 전송하는 일련의 상황을 테스트하기 위한 함수인 셈이다."},{"method":"get","path":"/v1/payments/{paymentKey}","name":"v1_payments_getByPaymentkey","parameters":[{"type":"string","description":" 결제 정보의 {@link ITossPayment.paymentKey}"}],"output":{"oneOf":[{"type":"object","properties":{"card":{"type":"object","properties":{"company":{"type":"string","title":"카드사 이름","description":"카드사 이름."},"number":{"type":"string","pattern":"[0-9]{16}","title":"카드 번호","description":"카드 번호."},"installmentPlanMonths":{"type":"number","title":"할부 개월 수","description":"할부 개월 수."},"isInterestFree":{"type":"boolean","title":"무이자 할부 적용 여부","description":"무이자 할부 적용 여부."},"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"useCardPoint":{"type":"boolean","title":"카드 포인트 사용 여부","description":"카드 포인트 사용 여부."},"cardType":{"type":"string","enum":["신용","체크","기프트"],"title":"카드 타입","description":"카드 타입."},"ownerType":{"type":"string","enum":["개인","법인"],"title":"카드의 소유자 타입","description":"카드의 소유자 타입."},"acquireStatus":{"type":"string","enum":["READY","CANCELED","REQUESTED","COMPLETED","CANCEL_REQUESTED"],"title":"카드 결제의 매입 상태","description":"카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨"},"receiptUrl":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."}},"required":["company","number","installmentPlanMonths","isInterestFree","approveNo","useCardPoint","cardType","ownerType","acquireStatus","receiptUrl"],"description":"카드 정보."},"discount":{"type":"object","properties":{"amount":{"type":"number","title":"카드사의 즉시 할인 프로모션을 적용한 금액","description":"카드사의 즉시 할인 프로모션을 적용한 금액."}},"required":["amount"],"description":"카드사의 즉시 할인 프로모션 정보.","nullable":true,"title":"카드사의 즉시 할인 프로모션 정보"},"easyPay":{"type":"string","enum":["토스결제","페이코","삼성페이"],"nullable":true,"title":"간편결제로 결제한 경우 간편결제 타입 정보","description":"간편결제로 결제한 경우 간편결제 타입 정보."},"method":{"type":"string","enum":["카드"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL","BILLING"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["card","discount","easyPay","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"카드 결제 정보."},{"type":"object","properties":{"giftCertificate":{"type":"object","properties":{"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"settlementStatus":{"type":"string","enum":["COMPLETE","INCOMPLETE"],"title":"정산 상태","description":"정산 상태."}},"required":["approveNo","settlementStatus"],"description":"상품권 정보."},"method":{"type":"string","enum":["상품권"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["giftCertificate","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"상품권 결제 정보."},{"type":"object","properties":{"mobilePhone":{"type":"object","properties":{"carrier":{"type":"string","title":"통신사","description":"통신사."},"customerMobilePhone":{"type":"string","title":"고객 휴대폰 번호","description":"고객 휴대폰 번호."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."}},"required":["carrier","customerMobilePhone","settlementStatus"],"description":"휴대폰 정보."},"method":{"type":"string","enum":["휴대폰"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["mobilePhone","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"휴대폰 결제 정보."},{"type":"object","properties":{"transfer":{"type":"object","properties":{"bank":{"type":"string","title":"은행명","description":"은행명."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"이체 상태","description":"이체 상태."}},"required":["bank","settlementStatus"],"description":"계좌 이체 정보."},"method":{"type":"string","enum":["계좌이체"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["transfer","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"계좌 이체 결제 정보."},{"type":"object","properties":{"secret":{"type":"string","title":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값","description":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값."},"virtualAccount":{"type":"object","properties":{"accountNumber":{"type":"string","title":"계좌 번호","description":"계좌 번호."},"accountType":{"type":"string","enum":["일반","고정"],"title":"가상 계좌 타입","description":"가상 계좌 타입."},"bank":{"type":"string","title":"은행명","description":"은행명."},"customerName":{"type":"string","title":"고객 이름","description":"고객 이름."},"dueDate":{"type":"string","format":"date","title":"입금 기한","description":"입금 기한."},"expired":{"type":"boolean","title":"가상 계좌 만료 여부","description":"가상 계좌 만료 여부."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."},"refundStatus":{"type":"string","enum":["COMPLETED","NONE","FAILED","PENDING","PARTIAL_FAILED"],"title":"환불 처리 상태","description":"환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료"}},"required":["accountNumber","accountType","bank","customerName","dueDate","expired","settlementStatus","refundStatus"],"description":"가상 계좌 정보."},"method":{"type":"string","enum":["가상계좌"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["secret","virtualAccount","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"가상 계좌 결제 정보."}],"description":"결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```"},"description":"결제 정보 조회하기.\n\n`payments.at` 은 결제 정보를 조회하는 함수이다.\n\n주로 클라이언트 어플리케이션이 토스 페이먼츠가 자체적으로 제공하는 결제 창을 사용하는\n경우, 그래서 프론트 어플리케이션이 귀하의 백엔드 서버에 `paymentKey` 등 극히 일부의\n식별자 정보만을 전달해주어, 상세 결제 정보가 필요할 때 사용한다.\n\n참고로 토스 페이먼츠는 다른 결제 PG 사들과 다르게, 클라이언트 어플리케이션에서 토스\n페이먼츠의 결제 창을 이용하여 진행한 결제가 바로 확정되는 것은 아니다. 귀사의 백엔드\n서버가 현재의 `payments.at` 을 통하여 해당 결제 정보를 확인하고, {@link approve} 를\n호출하여 직접 승인하기 전까지, 해당 결제는 확정되지 않으니, 이 점에 유의하기 바란다."},{"method":"post","path":"/v1/payments/{paymentKey}","name":"v1_payments_postByPaymentkey","parameters":[{"type":"string","description":" 대상 결제의 {@link ITossPayment.paymentKey}"},{"type":"object","properties":{"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."}},"required":["orderId","amount"],"description":"결제 승인 정보."}],"output":{"oneOf":[{"type":"object","properties":{"card":{"type":"object","properties":{"company":{"type":"string","title":"카드사 이름","description":"카드사 이름."},"number":{"type":"string","pattern":"[0-9]{16}","title":"카드 번호","description":"카드 번호."},"installmentPlanMonths":{"type":"number","title":"할부 개월 수","description":"할부 개월 수."},"isInterestFree":{"type":"boolean","title":"무이자 할부 적용 여부","description":"무이자 할부 적용 여부."},"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"useCardPoint":{"type":"boolean","title":"카드 포인트 사용 여부","description":"카드 포인트 사용 여부."},"cardType":{"type":"string","enum":["신용","체크","기프트"],"title":"카드 타입","description":"카드 타입."},"ownerType":{"type":"string","enum":["개인","법인"],"title":"카드의 소유자 타입","description":"카드의 소유자 타입."},"acquireStatus":{"type":"string","enum":["READY","CANCELED","REQUESTED","COMPLETED","CANCEL_REQUESTED"],"title":"카드 결제의 매입 상태","description":"카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨"},"receiptUrl":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."}},"required":["company","number","installmentPlanMonths","isInterestFree","approveNo","useCardPoint","cardType","ownerType","acquireStatus","receiptUrl"],"description":"카드 정보."},"discount":{"type":"object","properties":{"amount":{"type":"number","title":"카드사의 즉시 할인 프로모션을 적용한 금액","description":"카드사의 즉시 할인 프로모션을 적용한 금액."}},"required":["amount"],"description":"카드사의 즉시 할인 프로모션 정보.","nullable":true,"title":"카드사의 즉시 할인 프로모션 정보"},"easyPay":{"type":"string","enum":["토스결제","페이코","삼성페이"],"nullable":true,"title":"간편결제로 결제한 경우 간편결제 타입 정보","description":"간편결제로 결제한 경우 간편결제 타입 정보."},"method":{"type":"string","enum":["카드"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL","BILLING"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["card","discount","easyPay","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"카드 결제 정보."},{"type":"object","properties":{"giftCertificate":{"type":"object","properties":{"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"settlementStatus":{"type":"string","enum":["COMPLETE","INCOMPLETE"],"title":"정산 상태","description":"정산 상태."}},"required":["approveNo","settlementStatus"],"description":"상품권 정보."},"method":{"type":"string","enum":["상품권"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["giftCertificate","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"상품권 결제 정보."},{"type":"object","properties":{"mobilePhone":{"type":"object","properties":{"carrier":{"type":"string","title":"통신사","description":"통신사."},"customerMobilePhone":{"type":"string","title":"고객 휴대폰 번호","description":"고객 휴대폰 번호."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."}},"required":["carrier","customerMobilePhone","settlementStatus"],"description":"휴대폰 정보."},"method":{"type":"string","enum":["휴대폰"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["mobilePhone","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"휴대폰 결제 정보."},{"type":"object","properties":{"transfer":{"type":"object","properties":{"bank":{"type":"string","title":"은행명","description":"은행명."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"이체 상태","description":"이체 상태."}},"required":["bank","settlementStatus"],"description":"계좌 이체 정보."},"method":{"type":"string","enum":["계좌이체"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["transfer","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"계좌 이체 결제 정보."},{"type":"object","properties":{"secret":{"type":"string","title":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값","description":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값."},"virtualAccount":{"type":"object","properties":{"accountNumber":{"type":"string","title":"계좌 번호","description":"계좌 번호."},"accountType":{"type":"string","enum":["일반","고정"],"title":"가상 계좌 타입","description":"가상 계좌 타입."},"bank":{"type":"string","title":"은행명","description":"은행명."},"customerName":{"type":"string","title":"고객 이름","description":"고객 이름."},"dueDate":{"type":"string","format":"date","title":"입금 기한","description":"입금 기한."},"expired":{"type":"boolean","title":"가상 계좌 만료 여부","description":"가상 계좌 만료 여부."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."},"refundStatus":{"type":"string","enum":["COMPLETED","NONE","FAILED","PENDING","PARTIAL_FAILED"],"title":"환불 처리 상태","description":"환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료"}},"required":["accountNumber","accountType","bank","customerName","dueDate","expired","settlementStatus","refundStatus"],"description":"가상 계좌 정보."},"method":{"type":"string","enum":["가상계좌"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["secret","virtualAccount","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"가상 계좌 결제 정보."}],"description":"결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```"},"description":"결제 승인하기.\n\n토스 페이먼츠는 귀사의 백엔드에서 일어난 결제가 아닌 프론트 어플리케이션의 결제 창에서\n이루어진 결제의 경우, 해당 서비스으 백엔드 서버로부터 결제를 승인받기 전까지, 이를\n확정하지 않는다. `payments.approve` 는 바로 이러한 상황에서, 해당 결제를 승인해주는\n함수이다.\n\n만일 귀하가 `fake-toss-payments-server` 를 이용하여 결제를 시뮬레이션하는 경우라면,\n결제 관련 API 를 호출함에 있어 {@link ITossCardPayment.ICreate.__approved} 내지\n{@link ITossVirtualAccountPayment.ICreate.__approved} 를 `false` 로 함으로써, 별도\n승인이 필요한 이러한 상황을 시뮬레이션 할 수 있다."},{"method":"post","path":"/v1/payments/key-in","name":"v1_payments_key_in_post","parameters":[{"type":"object","properties":{"method":{"type":"string","enum":["card"],"title":"결제 수단이 신용 카드임을 의미","description":"결제 수단이 신용 카드임을 의미."},"cardNumber":{"type":"string","pattern":"[0-9]{16}","title":"카드 번호","description":"카드 번호."},"cardExpirationYear":{"type":"string","pattern":"\\d{2}","title":"카드 만료 년도 (2 자리)","description":"카드 만료 년도 (2 자리)."},"cardExpirationMonth":{"type":"string","pattern":"^(0[1-9]|1[012])$","title":"카드 만료 월 (2 자리)","description":"카드 만료 월 (2 자리)."},"cardPassword":{"type":"string","title":"카드 비밀번호","description":"카드 비밀번호."},"cardInstallmentPlan":{"type":"number","title":"할부 개월 수","description":"할부 개월 수."},"amount":{"type":"number","title":"지불 총액","description":"지불 총액."},"taxFreeAmount":{"type":"number","title":"면세금 총액","description":"면세금 총액."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"customerBirthday":{"type":"string","pattern":"^([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$","title":"고객의 생년월일","description":"고객의 생년월일.\n\n표기 형식 YYMMDD."},"customerEmail":{"type":"string","format":"email","title":"고객의 이메일","description":"고객의 이메일."},"vbv":{"type":"object","properties":{"cavv":{"type":"string","title":"3D Secure 인증 세션에 대한 인증 값","description":"3D Secure 인증 세션에 대한 인증 값."},"xid":{"type":"string","title":"트랜잭션 ID","description":"트랜잭션 ID."},"eci":{"type":"string","title":"3DS 인증 결과에 대한 코드 값","description":"3DS 인증 결과에 대한 코드 값."}},"required":["cavv","xid","eci"],"title":"해외카드로 결제하는 경우 3DS 인증 적용을 위해 사용","description":"해외카드로 결제하는 경우 3DS 인증 적용을 위해 사용.\n\n3DS 인증 결과를 전송해야 하는 경우에만 필수."},"__approved":{"type":"boolean","title":"결제 승인 여부","description":"결제 승인 여부.\n\n오직 가짜 페이먼츠 서버 `fake-toss-payments-server` 에서만 사용되는 값으로써,\n결제 승인을 고의로 지연시키거나 할 때 사용된다. 이 값을 `false` 로 하면, 프론트\n어플리케이션이 토스 페이먼츠가 제공해주는 결제 창을 사용하여 결제를 진행하는\n상황을 시뮬레이션할 수 있다.\n\n본디 토스 페이먼츠 서버는 프론트 어플리케이션에서 백엔드 서버를 거치지 않고,\n토스 페이먼츠가 제공해주는 결제 창을 이용하여 직접 결제를 요청하는 경우,\n백엔드에서 이를 별도 {@link functional.payments.approve 승인} 처리해주기 전까지\n정식 결제로 인청치 아니한다.\n\n반면 백엔드 서버에서 토스 페이먼츠 서버의 API 를 호출하는 경우, 토스 페이먼츠는\n이를 그 즉시로 승인해주기, `fake-toss-payments-server` 에서 별도의 승인 처리가\n필요한 상황을 시뮬레이션하기 위해서는 이러한 속성이 필요한 것."}},"required":["method","cardNumber","cardExpirationYear","cardExpirationMonth","amount","orderId"],"description":"신용 카드를 이용한 결제 신청 정보."}],"output":{"type":"object","properties":{"card":{"type":"object","properties":{"company":{"type":"string","title":"카드사 이름","description":"카드사 이름."},"number":{"type":"string","pattern":"[0-9]{16}","title":"카드 번호","description":"카드 번호."},"installmentPlanMonths":{"type":"number","title":"할부 개월 수","description":"할부 개월 수."},"isInterestFree":{"type":"boolean","title":"무이자 할부 적용 여부","description":"무이자 할부 적용 여부."},"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"useCardPoint":{"type":"boolean","title":"카드 포인트 사용 여부","description":"카드 포인트 사용 여부."},"cardType":{"type":"string","enum":["신용","체크","기프트"],"title":"카드 타입","description":"카드 타입."},"ownerType":{"type":"string","enum":["개인","법인"],"title":"카드의 소유자 타입","description":"카드의 소유자 타입."},"acquireStatus":{"type":"string","enum":["READY","CANCELED","REQUESTED","COMPLETED","CANCEL_REQUESTED"],"title":"카드 결제의 매입 상태","description":"카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨"},"receiptUrl":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."}},"required":["company","number","installmentPlanMonths","isInterestFree","approveNo","useCardPoint","cardType","ownerType","acquireStatus","receiptUrl"],"description":"카드 정보."},"discount":{"type":"object","properties":{"amount":{"type":"number","title":"카드사의 즉시 할인 프로모션을 적용한 금액","description":"카드사의 즉시 할인 프로모션을 적용한 금액."}},"required":["amount"],"description":"카드사의 즉시 할인 프로모션 정보.","nullable":true,"title":"카드사의 즉시 할인 프로모션 정보"},"easyPay":{"type":"string","enum":["토스결제","페이코","삼성페이"],"nullable":true,"title":"간편결제로 결제한 경우 간편결제 타입 정보","description":"간편결제로 결제한 경우 간편결제 타입 정보."},"method":{"type":"string","enum":["카드"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL","BILLING"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["card","discount","easyPay","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"카드 결제 정보."},"description":"카드로 결제하기.\n\n`payments.key_in` 은 카드를 이용한 결제를 할 때 호출되는 API 함수이다.\n\n참고로 `payments.key_in` 는 클라이언트 어플리케이션이 토스 페이먼츠가 자체적으로\n제공하는 결제 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는\n일은 없을 것이다. 다만, 고객이 카드를 통하여 결제하는 상황을 시뮬레이션하기 위하여,\n테스트 자동화 프로그램 수준에서 사용될 수는 있다.\n\n그리고 귀하의 백엔드 서버가 `payments.key-in` 을 직접 호출하는 경우, 토스 페이먼츠\n서버는 이를 완전히 승인된 결제로 보고 바로 확정한다. 때문에 `payments.key-in` 을\n직접 호출하는 경우, 토스 페이먼츠의 결제 창을 이용하여 별도의 {@link approve} 가\n필요한 때 대비, 훨씬 더 세심한 주의가 요구된다.\n\n더하여 만약 귀하의 백엔드 서버가 `fake-toss-payments-server` 를 이용하여 고객의\n카드 결제를 시뮬레이션하는 경우, {@link ITossCardPayment.ICreate.__approved} 값을\n`false` 로 하여 카드 결제의 확정을 고의로 회피할 수 있다. 이를 통하여 토스\n페이먼츠의 결제 창을 이용한 카드 결제의 경우, 별도의 {@link approve} 가 필요한\n상황을 시뮬레이션 할 수 있다."},{"method":"post","path":"/v1/payments/{paymentKey}/cancel","name":"v1_payments_cancel_postByPaymentkey","parameters":[{"type":"string","description":" 결제 정보의 {@link ITossPayment.paymentKey}"},{"type":"object","properties":{"paymentKey":{"type":"string","title":"{@link ITossPayment} 의 식별자 키","description":"{@link ITossPayment} 의 식별자 키."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"refundReceiveAccount":{"type":"object","properties":{"bank":{"type":"string","title":"은행 정보","description":"은행 정보."},"accountNumber":{"type":"string","pattern":"^[0-9]{0,20}$","title":"계좌 번호","description":"계좌 번호."},"holderName":{"type":"string","title":"예금주","description":"예금주."}},"required":["bank","accountNumber","holderName"],"title":"환불 계좌 정보","description":"환불 계좌 정보.\n\n결제를 가상 계좌로 하였을 때에만 해당함."},"taxAmount":{"type":"number","title":"과세 처리 금액","description":"과세 처리 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리 금액","description":"면세 처리 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."}},"required":["paymentKey","cancelReason"],"description":"결제 취소 신청 정보."}],"output":{"oneOf":[{"type":"object","properties":{"card":{"type":"object","properties":{"company":{"type":"string","title":"카드사 이름","description":"카드사 이름."},"number":{"type":"string","pattern":"[0-9]{16}","title":"카드 번호","description":"카드 번호."},"installmentPlanMonths":{"type":"number","title":"할부 개월 수","description":"할부 개월 수."},"isInterestFree":{"type":"boolean","title":"무이자 할부 적용 여부","description":"무이자 할부 적용 여부."},"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"useCardPoint":{"type":"boolean","title":"카드 포인트 사용 여부","description":"카드 포인트 사용 여부."},"cardType":{"type":"string","enum":["신용","체크","기프트"],"title":"카드 타입","description":"카드 타입."},"ownerType":{"type":"string","enum":["개인","법인"],"title":"카드의 소유자 타입","description":"카드의 소유자 타입."},"acquireStatus":{"type":"string","enum":["READY","CANCELED","REQUESTED","COMPLETED","CANCEL_REQUESTED"],"title":"카드 결제의 매입 상태","description":"카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨"},"receiptUrl":{"type":"string","format":"uri","title":"영수증 URL","description":"영수증 URL."}},"required":["company","number","installmentPlanMonths","isInterestFree","approveNo","useCardPoint","cardType","ownerType","acquireStatus","receiptUrl"],"description":"카드 정보."},"discount":{"type":"object","properties":{"amount":{"type":"number","title":"카드사의 즉시 할인 프로모션을 적용한 금액","description":"카드사의 즉시 할인 프로모션을 적용한 금액."}},"required":["amount"],"description":"카드사의 즉시 할인 프로모션 정보.","nullable":true,"title":"카드사의 즉시 할인 프로모션 정보"},"easyPay":{"type":"string","enum":["토스결제","페이코","삼성페이"],"nullable":true,"title":"간편결제로 결제한 경우 간편결제 타입 정보","description":"간편결제로 결제한 경우 간편결제 타입 정보."},"method":{"type":"string","enum":["카드"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL","BILLING"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["card","discount","easyPay","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"카드 결제 정보."},{"type":"object","properties":{"giftCertificate":{"type":"object","properties":{"approveNo":{"type":"string","title":"승인 번호","description":"승인 번호."},"settlementStatus":{"type":"string","enum":["COMPLETE","INCOMPLETE"],"title":"정산 상태","description":"정산 상태."}},"required":["approveNo","settlementStatus"],"description":"상품권 정보."},"method":{"type":"string","enum":["상품권"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["giftCertificate","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"상품권 결제 정보."},{"type":"object","properties":{"mobilePhone":{"type":"object","properties":{"carrier":{"type":"string","title":"통신사","description":"통신사."},"customerMobilePhone":{"type":"string","title":"고객 휴대폰 번호","description":"고객 휴대폰 번호."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."}},"required":["carrier","customerMobilePhone","settlementStatus"],"description":"휴대폰 정보."},"method":{"type":"string","enum":["휴대폰"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["mobilePhone","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"휴대폰 결제 정보."},{"type":"object","properties":{"transfer":{"type":"object","properties":{"bank":{"type":"string","title":"은행명","description":"은행명."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"이체 상태","description":"이체 상태."}},"required":["bank","settlementStatus"],"description":"계좌 이체 정보."},"method":{"type":"string","enum":["계좌이체"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["transfer","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"계좌 이체 결제 정보."},{"type":"object","properties":{"secret":{"type":"string","title":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값","description":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값."},"virtualAccount":{"type":"object","properties":{"accountNumber":{"type":"string","title":"계좌 번호","description":"계좌 번호."},"accountType":{"type":"string","enum":["일반","고정"],"title":"가상 계좌 타입","description":"가상 계좌 타입."},"bank":{"type":"string","title":"은행명","description":"은행명."},"customerName":{"type":"string","title":"고객 이름","description":"고객 이름."},"dueDate":{"type":"string","format":"date","title":"입금 기한","description":"입금 기한."},"expired":{"type":"boolean","title":"가상 계좌 만료 여부","description":"가상 계좌 만료 여부."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."},"refundStatus":{"type":"string","enum":["COMPLETED","NONE","FAILED","PENDING","PARTIAL_FAILED"],"title":"환불 처리 상태","description":"환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료"}},"required":["accountNumber","accountType","bank","customerName","dueDate","expired","settlementStatus","refundStatus"],"description":"가상 계좌 정보."},"method":{"type":"string","enum":["가상계좌"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["secret","virtualAccount","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"가상 계좌 결제 정보."}],"description":"결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```"},"description":"결제 취소하기.\n\n`payments.cancel` 은 결제를 취소하는 API 이다.\n\n결제 취소 입력 정보 {@link ITossPaymentCancel.ICreate} 에는 취소 사유를 비롯하여,\n고객에게 환불해 줄 금액과 부가세 및 필요시 환불 계좌 정보 등을 입력하게 되어있다."},{"method":"post","path":"/v1/virtual-accounts","name":"v1_virtual_accounts_post","parameters":[{"type":"object","properties":{"method":{"type":"string","enum":["virtual-account"],"title":"결제 수단이 가상 계좌임을 의미","description":"결제 수단이 가상 계좌임을 의미."},"orderId":{"type":"string","title":"주문 식별자 번호","description":"주문 식별자 번호.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"bank":{"type":"string","title":"은행명","description":"은행명."},"customerName":{"type":"string","title":"고객 이름","description":"고객 이름."},"amount":{"type":"number","title":"결제 총액","description":"결제 총액."},"__approved":{"type":"boolean","title":"결제 승인 여부","description":"결제 승인 여부.\n\n오직 가짜 페이먼츠 서버 `fake-toss-payments-server` 에서만 사용되는 값으로써,\n결제 승인을 고의로 지연시키거나 할 때 사용된다. 이 값을 `false` 로 하면, 프론트\n어플리케이션이 토스 페이먼츠가 제공해주는 결제 창을 사용하여 결제를 진행하는\n상황을 시뮬레이션할 수 있다.\n\n본디 토스 페이먼츠 서버는 프론트 어플리케이션에서 백엔드 서버를 거치지 않고,\n토스 페이먼츠가 제공해주는 결제 창을 이용하여 직접 결제를 요청하는 경우,\n백엔드에서 이를 별도 {@link functional.payments.approve 승인} 처리해주기 전까지\n정식 결제로 인청치 아니한다.\n\n반면 백엔드 서버에서 토스 페이먼츠 서버의 API 를 호출하는 경우, 토스 페이먼츠는\n이를 그 즉시로 승인해주기, `fake-toss-payments-server` 에서 별도의 승인 처리가\n필요한 상황을 시뮬레이션하기 위해서는 이러한 속성이 필요한 것."}},"required":["method","orderId","orderName","bank","customerName","amount"],"description":"가상 계좌를 이용한 결제 신청 정보."}],"output":{"type":"object","properties":{"secret":{"type":"string","title":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값","description":"가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값."},"virtualAccount":{"type":"object","properties":{"accountNumber":{"type":"string","title":"계좌 번호","description":"계좌 번호."},"accountType":{"type":"string","enum":["일반","고정"],"title":"가상 계좌 타입","description":"가상 계좌 타입."},"bank":{"type":"string","title":"은행명","description":"은행명."},"customerName":{"type":"string","title":"고객 이름","description":"고객 이름."},"dueDate":{"type":"string","format":"date","title":"입금 기한","description":"입금 기한."},"expired":{"type":"boolean","title":"가상 계좌 만료 여부","description":"가상 계좌 만료 여부."},"settlementStatus":{"type":"string","enum":["COMPLETED","INCOMPLETED"],"title":"정산 상태","description":"정산 상태."},"refundStatus":{"type":"string","enum":["COMPLETED","NONE","FAILED","PENDING","PARTIAL_FAILED"],"title":"환불 처리 상태","description":"환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료"}},"required":["accountNumber","accountType","bank","customerName","dueDate","expired","settlementStatus","refundStatus"],"description":"가상 계좌 정보."},"method":{"type":"string","enum":["가상계좌"],"title":"결제 수단","description":"결제 수단."},"type":{"type":"string","enum":["NORMAL"],"title":"결제 타입","description":"결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제."},"status":{"type":"string","enum":["READY","IN_PROGRESS","WAITING_FOR_DEPOSIT","DONE","CANCELED","PARTIAL_CANCELED","ABORTED","EXPIRED"],"title":"결제 상태","description":"결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED"},"mId":{"type":"string","title":"가맹점 ID","description":"가맹점 ID.\n\n현재 tosspayments 가 쓰임."},"version":{"type":"string","title":"사용 중인 토스 페이먼츠 API 의 버전","description":"사용 중인 토스 페이먼츠 API 의 버전."},"paymentKey":{"type":"string","title":"결제 내역의 식별자 번호","description":"결제 내역의 식별자 번호."},"orderId":{"type":"string","title":"주문 식별자 키","description":"주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키."},"transactionKey":{"type":"string","title":"거래 건에 대한 고유한 키 값","description":"거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라."},"orderName":{"type":"string","title":"주문 이름","description":"주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명."},"currency":{"type":"string","title":"화폐 단위","description":"화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능."},"totalAmount":{"type":"number","title":"총 결제 금액","description":"총 결제 금액."},"balanceAmount":{"type":"number","title":"취소할 수 있는 금액","description":"취소할 수 있는 금액."},"suppliedAmount":{"type":"number","title":"공급가액","description":"공급가액."},"taxFreeAmount":{"type":"number","title":"면세액","description":"면세액."},"vat":{"type":"number","title":"부가세","description":"부가세."},"useEscrow":{"type":"boolean","title":"에스크로 사용 여부","description":"에스크로 사용 여부."},"cultureExpense":{"type":"boolean","title":"문화비 지출 여부","description":"문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등."},"requestedAt":{"type":"string","format":"date-time","title":"결제 요청 일시","description":"결제 요청 일시."},"approvedAt":{"type":"string","format":"date-time","nullable":true,"title":"결제 승인 일시","description":"결제 승인 일시."},"cancels":{"type":"array","items":{"type":"object","properties":{"cancelAmount":{"type":"number","title":"취소 총액","description":"취소 총액."},"cancelReason":{"type":"string","title":"취소 사유","description":"취소 사유."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"taxAmount":{"type":"number","title":"과세 처리된 금액","description":"과세 처리된 금액."},"refundableAmount":{"type":"number","title":"결제 취소 후 환불 가능 잔액","description":"결제 취소 후 환불 가능 잔액."},"canceledAt":{"type":"string","format":"date-time","title":"취소 일시","description":"취소 일시."}},"required":["cancelAmount","cancelReason","taxFreeAmount","taxAmount","refundableAmount","canceledAt"],"description":"결제 취소 정보."},"nullable":true,"title":"결제 취소 내역","description":"결제 취소 내역."},"cashReceipt":{"type":"object","properties":{"type":{"type":"string","enum":["소득공제","지출증빙"],"description":"현금 영수증의 종류."},"amount":{"type":"number","title":"현금 영수증 처리된 금액","description":"현금 영수증 처리된 금액."},"taxFreeAmount":{"type":"number","title":"면세 처리된 금액","description":"면세 처리된 금액."},"issueNumber":{"type":"string","title":"현금영수증 발급번호","description":"현금영수증 발급번호."},"receiptUrl":{"type":"string","title":"현금영수증 조회 페이지 주소","description":"현금영수증 조회 페이지 주소."}},"required":["type","amount","taxFreeAmount","issueNumber","receiptUrl"],"description":"현금 영수증 정보.","nullable":true,"title":"현금 영수증 정보"}},"required":["secret","virtualAccount","method","type","status","mId","version","paymentKey","orderId","transactionKey","orderName","currency","totalAmount","balanceAmount","suppliedAmount","taxFreeAmount","vat","useEscrow","cultureExpense","requestedAt","approvedAt","cancels","cashReceipt"],"description":"가상 계좌 결제 정보."},"description":"가상 계좌로 결제 신청하기.\n\n`virtual_accounts.create` 는 고객이 결제 수단을 가상 계좌로 선택하는 경우에 호출되는\nAPI 함수이다. 물론 고객이 이처럼 가상 계좌를 선택한 경우, 고객이 지정된 계좌에 돈을\n입금하기 전까지는 결제가 마무리된 것이 아니기에, {@link ITossPayment.status} 값은\n`WAITING_FOR_DEPOSIT` 이 된다.\n\n참고로 `virtual_accounts.create` 는 클라이언트 어플리케이션이 토스 페이먼츠가\n자체적으로 제공하는 결제 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서\n호출하는 일은 없을 것이다. 다만, 고객이 가상 계좌로 결제를 진행하는 상황을\n시뮬레이션하기 위하여, 테스트 자동화 프로그램 수준에서 사용될 수는 있다.\n\n그리고 `virtual_accounts.create` 이후에 고객이 지정된 계좌에 금액을 입금하거든, 토스\n페이먼츠 서버로부터 웹훅 이벤트가 발생되어 귀하의 백엔드 서버로 전송된다. 만약 연동\n대상 토스 페이먼츠 서버가 실제가 아닌 `fake-toss-payments-server` 라면,\n{@link internal.virtual_accounts.deposit} 를 호출하여, 고객이 가상 계좌에 입금하는\n상황을 시뮬레이션 할 수 있다."}],"errors":[],"options":{"keyword":false,"separate":null}} \ No newline at end of file diff --git a/examples/positional/uber.json b/examples/positional/uber.json index cd9ecbd..2ae0011 100644 --- a/examples/positional/uber.json +++ b/examples/positional/uber.json @@ -1,194 +1 @@ -{ - "openapi": "3.0.3", - "functions": [ - { - "method": "get", - "path": "/products", - "name": "products_get", - "parameters": [ - { - "type": "object", - "properties": { - "latitude": { - "name": "latitude", - "in": "query", - "description": "Latitude component of location.", - "required": true, - "type": "number", - "format": "double" - }, - "longitude": { - "name": "longitude", - "in": "query", - "description": "Longitude component of location.", - "required": true, - "type": "number", - "format": "double" - } - }, - "required": [ - "latitude", - "longitude" - ] - } - ], - "output": { - "type": "array", - "items": {} - }, - "description": "Product Types.\n\nThe Products endpoint returns information about the Uber products offered at a given location. The response includes the display name and other details about each product, and lists the products in the proper display order." - }, - { - "method": "get", - "path": "/estimates/price", - "name": "estimates_price_get", - "parameters": [ - { - "type": "object", - "properties": { - "start_latitude": { - "name": "start_latitude", - "in": "query", - "description": "Latitude component of start location.", - "required": true, - "type": "number", - "format": "double" - }, - "start_longitude": { - "name": "start_longitude", - "in": "query", - "description": "Longitude component of start location.", - "required": true, - "type": "number", - "format": "double" - }, - "end_latitude": { - "name": "end_latitude", - "in": "query", - "description": "Latitude component of end location.", - "required": true, - "type": "number", - "format": "double" - }, - "end_longitude": { - "name": "end_longitude", - "in": "query", - "description": "Longitude component of end location.", - "required": true, - "type": "number", - "format": "double" - } - }, - "required": [ - "start_latitude", - "start_longitude", - "end_latitude", - "end_longitude" - ] - } - ], - "output": { - "type": "array", - "items": {} - }, - "description": "Price Estimates.\n\nThe Price Estimates endpoint returns an estimated price range for each product offered at a given location. The price estimate is provided as a formatted string with the full price range and the localized currency symbol.

The response also includes low and high estimates, and the [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217) currency code for situations requiring currency conversion. When surge is active for a particular product, its surge_multiplier will be greater than 1, but the price estimate already factors in this multiplier." - }, - { - "method": "get", - "path": "/estimates/time", - "name": "estimates_time_get", - "parameters": [ - { - "type": "object", - "properties": { - "start_latitude": { - "name": "start_latitude", - "in": "query", - "description": "Latitude component of start location.", - "required": true, - "type": "number", - "format": "double" - }, - "start_longitude": { - "name": "start_longitude", - "in": "query", - "description": "Longitude component of start location.", - "required": true, - "type": "number", - "format": "double" - }, - "customer_uuid": { - "name": "customer_uuid", - "in": "query", - "type": "string", - "format": "uuid", - "description": "Unique customer identifier to be used for experience customization." - }, - "product_id": { - "name": "product_id", - "in": "query", - "type": "string", - "description": "Unique identifier representing a specific product for a given latitude & longitude." - } - }, - "required": [ - "start_latitude", - "start_longitude", - "customer_uuid", - "product_id" - ] - } - ], - "output": { - "type": "array", - "items": {} - }, - "description": "Time Estimates.\n\nThe Time Estimates endpoint returns ETAs for all products offered at a given location, with the responses expressed as integers in seconds. We recommend that this endpoint be called every minute to provide the most accurate, up-to-date ETAs." - }, - { - "method": "get", - "path": "/me", - "name": "me_get", - "parameters": [], - "output": {}, - "description": "User Profile.\n\nThe User Profile endpoint returns information about the Uber user that has authorized with the application." - }, - { - "method": "get", - "path": "/history", - "name": "history_get", - "parameters": [ - { - "type": "object", - "properties": { - "offset": { - "name": "offset", - "in": "query", - "type": "integer", - "format": "int32", - "description": "Offset the list of returned results by this amount. Default is zero." - }, - "limit": { - "name": "limit", - "in": "query", - "type": "integer", - "format": "int32", - "description": "Number of items to retrieve. Default is 5, maximum is 100." - } - }, - "required": [ - "offset", - "limit" - ] - } - ], - "output": {}, - "description": "User Activity.\n\nThe User Activity endpoint returns data about a user's lifetime activity with Uber. The response will include pickup locations and times, dropoff locations and times, the distance of past requests, and information about which products were requested.

The history array in the response will have a maximum length based on the limit parameter. The response value count may exceed limit, therefore subsequent API requests may be necessary." - } - ], - "errors": [], - "options": { - "keyword": false, - "separate": null - } -} \ No newline at end of file +{"openapi":"3.0.3","functions":[{"method":"get","path":"/products","name":"products_get","parameters":[{"type":"object","properties":{"latitude":{"name":"latitude","in":"query","description":"Latitude component of location.","required":true,"type":"number","format":"double"},"longitude":{"name":"longitude","in":"query","description":"Longitude component of location.","required":true,"type":"number","format":"double"}},"required":["latitude","longitude"]}],"output":{"type":"array","items":{}},"description":"Product Types.\n\nThe Products endpoint returns information about the Uber products offered at a given location. The response includes the display name and other details about each product, and lists the products in the proper display order."},{"method":"get","path":"/estimates/price","name":"estimates_price_get","parameters":[{"type":"object","properties":{"start_latitude":{"name":"start_latitude","in":"query","description":"Latitude component of start location.","required":true,"type":"number","format":"double"},"start_longitude":{"name":"start_longitude","in":"query","description":"Longitude component of start location.","required":true,"type":"number","format":"double"},"end_latitude":{"name":"end_latitude","in":"query","description":"Latitude component of end location.","required":true,"type":"number","format":"double"},"end_longitude":{"name":"end_longitude","in":"query","description":"Longitude component of end location.","required":true,"type":"number","format":"double"}},"required":["start_latitude","start_longitude","end_latitude","end_longitude"]}],"output":{"type":"array","items":{}},"description":"Price Estimates.\n\nThe Price Estimates endpoint returns an estimated price range for each product offered at a given location. The price estimate is provided as a formatted string with the full price range and the localized currency symbol.

The response also includes low and high estimates, and the [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217) currency code for situations requiring currency conversion. When surge is active for a particular product, its surge_multiplier will be greater than 1, but the price estimate already factors in this multiplier."},{"method":"get","path":"/estimates/time","name":"estimates_time_get","parameters":[{"type":"object","properties":{"start_latitude":{"name":"start_latitude","in":"query","description":"Latitude component of start location.","required":true,"type":"number","format":"double"},"start_longitude":{"name":"start_longitude","in":"query","description":"Longitude component of start location.","required":true,"type":"number","format":"double"},"customer_uuid":{"name":"customer_uuid","in":"query","type":"string","format":"uuid","description":"Unique customer identifier to be used for experience customization."},"product_id":{"name":"product_id","in":"query","type":"string","description":"Unique identifier representing a specific product for a given latitude & longitude."}},"required":["start_latitude","start_longitude","customer_uuid","product_id"]}],"output":{"type":"array","items":{}},"description":"Time Estimates.\n\nThe Time Estimates endpoint returns ETAs for all products offered at a given location, with the responses expressed as integers in seconds. We recommend that this endpoint be called every minute to provide the most accurate, up-to-date ETAs."},{"method":"get","path":"/me","name":"me_get","parameters":[],"output":{},"description":"User Profile.\n\nThe User Profile endpoint returns information about the Uber user that has authorized with the application."},{"method":"get","path":"/history","name":"history_get","parameters":[{"type":"object","properties":{"offset":{"name":"offset","in":"query","type":"integer","format":"int32","description":"Offset the list of returned results by this amount. Default is zero."},"limit":{"name":"limit","in":"query","type":"integer","format":"int32","description":"Number of items to retrieve. Default is 5, maximum is 100."}},"required":["offset","limit"]}],"output":{},"description":"User Activity.\n\nThe User Activity endpoint returns data about a user's lifetime activity with Uber. The response will include pickup locations and times, dropoff locations and times, the distance of past requests, and information about which products were requested.

The history array in the response will have a maximum length based on the limit parameter. The response value count may exceed limit, therefore subsequent API requests may be necessary."}],"errors":[],"options":{"keyword":false,"separate":null}} \ No newline at end of file diff --git a/examples/swagger/bbs.json b/examples/swagger/bbs.json index 1f2e82e..638bdcf 100644 --- a/examples/swagger/bbs.json +++ b/examples/swagger/bbs.json @@ -7,7 +7,7 @@ } ], "info": { - "version": "3.0.0", + "version": "3.0.2", "title": "@samchon/bbs-backend", "description": "Backend for bbs", "license": { @@ -125,8 +125,8 @@ "type": "string", "format": "uuid" }, - "description": "Target article's ", - "required": true + "required": true, + "description": " Target article's {@link IBbsArticle.id}" } ], "responses": { @@ -156,8 +156,8 @@ "type": "string", "format": "uuid" }, - "description": "Target article's ", - "required": true + "required": true, + "description": " Target article's {@link IBbsArticle.id}" } ], "requestBody": { @@ -198,8 +198,8 @@ "type": "string", "format": "uuid" }, - "description": "Target article's ", - "required": true + "required": true, + "description": " Target article's {@link IBbsArticle.id}" } ], "requestBody": { @@ -235,7 +235,6 @@ "type": "string", "format": "uuid" }, - "description": "", "required": true } ], @@ -277,8 +276,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged article's ", - "required": true + "required": true, + "description": " Belonged article's {@link IBbsArticle.id }" } ], "requestBody": { @@ -321,8 +320,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged article's ", - "required": true + "required": true, + "description": " Belonged article's {@link IBbsArticle.id }" }, { "name": "id", @@ -331,8 +330,8 @@ "type": "string", "format": "uuid" }, - "description": "Target comment's ", - "required": true + "required": true, + "description": " Target comment's {@link IBbsArticleComment.id}" } ], "responses": { @@ -362,8 +361,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged article's ", - "required": true + "required": true, + "description": " Belonged article's {@link IBbsArticle.id }" }, { "name": "id", @@ -372,8 +371,8 @@ "type": "string", "format": "uuid" }, - "description": "Target comment's ", - "required": true + "required": true, + "description": " Target comment's {@link IBbsArticleComment.id}" } ], "requestBody": { @@ -414,8 +413,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged article's ", - "required": true + "required": true, + "description": " Belonged article's {@link IBbsArticle.id }" }, { "name": "id", @@ -424,8 +423,8 @@ "type": "string", "format": "uuid" }, - "description": "Target comment's ", - "required": true + "required": true, + "description": " Target comment's {@link IBbsArticleComment.id}" } ], "requestBody": { @@ -633,7 +632,7 @@ "pages": { "type": "integer", "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." + "description": "Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling." } }, "required": [ @@ -855,7 +854,7 @@ "snapshots", "created_at" ], - "description": "Article entity.\n\n`IBbsArticle* is a super-type entity of all kinds of articles in the current\nbackend system, literally shaping individual articles of the bulletin board.\n\nAnd, as you can see, the elements that must inevitably exist in the article,\nsuch as the `title` or the `body`, do not exist in the `IBbsArticle`, but exist\nin the subsidiary entity, {@link IBbsArticle.ISnapshot }, as a 1: N relationship,\nwhich is because a new snapshot record is published every time the article is\nmodified.\n\nThe reason why a new snapshot record is published every time the article is\nmodified is to preserve the evidence. Due to the nature of e-community, there\nis always a threat of dispute among the participants. And it can happen that\ndisputes arise through articles or {@link IBbsArticleComment comments}, and to\nprevent such things as modifying existing articles to manipulate the situation,\nthe article is designed in this structure.\n\nIn other words, to keep evidence, and prevent fraud." + "description": "Article entity.\n\n`IBbsArticle* is a super-type entity of all kinds of articles in the current\nbackend system, literally shaping individual articles of the bulletin board.\n\nAnd, as you can see, the elements that must inevitably exist in the article,\nsuch as the `title` or the `body`, do not exist in the `IBbsArticle`, but exist\nin the subsidiary entity, {@link IBbsArticle.ISnapshot}, as a 1: N relationship,\nwhich is because a new snapshot record is published every time the article is\nmodified.\n\nThe reason why a new snapshot record is published every time the article is\nmodified is to preserve the evidence. Due to the nature of e-community, there\nis always a threat of dispute among the participants. And it can happen that\ndisputes arise through articles or {@link IBbsArticleComment comments}, and to\nprevent such things as modifying existing articles to manipulate the situation,\nthe article is designed in this structure.\n\nIn other words, to keep evidence, and prevent fraud." }, "IBbsArticle.ISnapshot": { "type": "object", @@ -877,6 +876,11 @@ "title": "Format of body", "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." }, + "title": { + "type": "string", + "title": "Title of article", + "description": "Title of article." + }, "body": { "type": "string", "title": "Content body of article", @@ -889,22 +893,17 @@ }, "title": "List of attachment files", "description": "List of attachment files." - }, - "title": { - "type": "string", - "title": "Title of article", - "description": "Title of article." } }, "required": [ "id", "created_at", "format", + "title", "body", - "files", - "title" + "files" ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." + "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." }, "IBbsArticle.ICreate": { "type": "object", @@ -1143,7 +1142,7 @@ "snapshots", "created_at" ], - "description": "Comment written on an article.\n\n`IBbsArticleComment` is an entity that shapes the comments written on an article.\n\nAnd for this comment, as in the previous relationship between\n{@link IBbsArticle } and {@link IBbsArticle.ISnapshot }, the content body of the\ncomment is stored in the sub {@link IBbsArticleComment.ISnapshot } table for\nevidentialism, and a new snapshot record is issued every time the comment is modified.\n\nAlso, `IBbsArticleComment` is expressing the relationship of the hierarchical reply\nstructure through the {@link IBbsArticleComment.parent_id } attribute." + "description": "Comment written on an article.\n\n`IBbsArticleComment` is an entity that shapes the comments written on an article.\n\nAnd for this comment, as in the previous relationship between\n{@link IBbsArticle} and {@link IBbsArticle.ISnapshot}, the content body of the\ncomment is stored in the sub {@link IBbsArticleComment.ISnapshot} table for\nevidentialism, and a new snapshot record is issued every time the comment is modified.\n\nAlso, `IBbsArticleComment` is expressing the relationship of the hierarchical reply\nstructure through the {@link IBbsArticleComment.parent_id} attribute." }, "IBbsArticleComment.ISnapshot": { "type": "object", @@ -1186,7 +1185,7 @@ "body", "files" ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." + "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud." }, "IBbsArticleComment.Format": { "oneOf": [ @@ -1269,6 +1268,11 @@ "title": "Format of body", "description": "Format of body.\n\nSame meaning with extension like `html`, `md`, `txt`." }, + "password": { + "type": "string", + "title": "Password for modification", + "description": "Password for modification." + }, "body": { "type": "string", "title": "Content body of comment", @@ -1281,18 +1285,13 @@ }, "title": "List of attachment files", "description": "List of attachment files." - }, - "password": { - "type": "string", - "title": "Password for modification", - "description": "Password for modification." } }, "required": [ "format", + "password", "body", - "files", - "password" + "files" ] }, "IBbsArticleComment.IErase": { @@ -1662,5 +1661,6 @@ { "name": "Monitor" } - ] + ], + "x-samchon-emended": true } \ No newline at end of file diff --git a/examples/swagger/iamport.json b/examples/swagger/iamport.json index d4459b7..92f8909 100644 --- a/examples/swagger/iamport.json +++ b/examples/swagger/iamport.json @@ -1,5 +1,5 @@ { - "openapi": "3.0.1", + "openapi": "3.1.0", "servers": [ { "url": "http://localhost:10851", @@ -12,114 +12,230 @@ ], "info": { "title": "Iamport API", - "description": "Built by [fake-iamport-server](https://github.com/samchon/fake-iamport-server) with [nestia](https://github.com/samchon/nestia)", - "version": "2.0.1", + "description": "Built by [fake-iamport-server](https://github.com/samchon/payments/tree/master/packages/fake-iamport-server) with [nestia](https://github.com/samchon/nestia)", + "version": "8.1.0", "license": { "name": "MIT" } }, "paths": { - "/certifications/{imp_uid}": { + "/subscribe/customers/{customer_uid}": { "get": { "tags": [], "parameters": [ { - "name": "imp_uid", + "name": "customer_uid", "in": "path", "schema": { "type": "string" }, - "description": "대상 본인인증 정보의 ", - "required": true + "required": true, + "description": " 고객 (간편 결제 카드) 식별자 키" } ], "responses": { "200": { - "description": "본인인증 정보", + "description": "간편 결제 카드 정보", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IIamportResponse_lt_IIamportCertification_gt_" + "$ref": "#/components/schemas/IIamportResponseIIamportSubscription" } } - }, - "x-nestia-encrypted": false + } } }, - "summary": "본인인증 정보 열람하기", - "description": "본인인증 정보 열람하기.\n\n`certiciations.at` 은 본인인증 정보를 열람할 때 사용하는 API 함수이다.\n\n다만 이 API 함수를 통하여 열람한 본인인증 정보 {@link IIamportCertification } 이\n곧 OTP 인증까지 마쳐 본인인증을 모두 마친 레코드라는 보장은 없다. 본인인증의 완결\n여부는 오직, {@link IIamportCertification.certified } 값을 직접 검사해봐야만 알\n수 있기 때문이다.", + "summary": "간편 결제 카드 정보 조회하기", + "description": "간편 결제 카드 정보 조회하기.\n\n`subscribe.customers.at` 은 고객이 {@link create} 나 혹은 아임포트가 제공하는\n간편 결제 카드 등록 창을 이용하여 저장한 간편 결제 카드 정보를 조회하는 API\n함수이다.", "security": [ { "bearer": [] } + ] + }, + "post": { + "tags": [], + "parameters": [ + { + "name": "customer_uid", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": " 고객 (간편 결제 카드) 식별자 키" + } ], - "x-nestia-namespace": "certifications.at", - "x-nestia-jsDocTags": [ + "requestBody": { + "description": "카드 입력 정보", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IIamportSubscription.ICreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "간편 결제 카드 정보", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IIamportResponseIIamportSubscription" + } + } + } + } + }, + "summary": "간편 결제 카드 등록하기", + "description": "간편 결제 카드 등록하기.\n\n`subscribe.customers.stoer` 는 고객이 자신의 카드를 서버에 등록해두고, 매번 결제가\n필요할 때마다 카드 정보를 반복 입력하는 일 없이, 간편하게 결제를 진행하고자 할 때\n사용하는 API 함수이다.\n\n참고로 `subscribe.customers.create` 는 클라이언트 어플리케이션이 아임포트가 제공하는\n간편 결제 카드 등록 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는\n일은 없을 것이다. 다만, 고객이 간편 결제 카드를 등록하는 상황을 시뮬레이션하기 위하여,\n테스트 자동화 프로그램 수준에서 사용될 수는 있다.", + "security": [ { - "name": "param", - "text": [ - { - "text": "imp_uid", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "대상 본인인증 정보의 ", - "kind": "text" - }, - { - "text": "{@link ", - "kind": "link" - }, - { - "text": "IIamportCertification.imp_uid", - "kind": "linkName", - "target": { - "fileName": "C:/github/samchon/fake-iamport-server/src/api/structures/IIamportCertification.ts", - "textSpan": { - "start": 488, - "length": 16 - } + "bearer": [] + } + ] + }, + "delete": { + "tags": [], + "parameters": [ + { + "name": "customer_uid", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": " 고객 (간편 결제 카드) 식별자 키" + } + ], + "responses": { + "200": { + "description": "삭제된 간편 결제 카드 정보", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IIamportResponseIIamportSubscription" } - }, - { - "text": "}", - "kind": "link" } - ] - }, + } + } + }, + "summary": "간편 결제 카드 삭제하기", + "description": "간편 결제 카드 삭제하기.\n\n간편 결제를 위하여 등록한 카드를 제거한다.", + "security": [ { - "name": "returns", - "text": [ - { - "text": "본인인증 정보", - "kind": "text" + "bearer": [] + } + ] + } + }, + "/subscribe/payments/onetime": { + "post": { + "tags": [], + "parameters": [], + "requestBody": { + "description": "카드 결제 신청 정보", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IIamportSubscription.IOnetime" } - ] + } }, + "required": true + }, + "responses": { + "201": { + "description": "카드 결제 정보", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IIamportResponseIIamportCardPayment" + } + } + } + } + }, + "summary": "카드로 결제하기, 더불어 간편 결제용으로 등록 가능", + "description": "카드로 결제하기, 더불어 간편 결제용으로 등록 가능.\n\n`subscribe.payments.onetime` 은 카드를 매개로 한 결제를 하고자 할 때 호출하는 API\n함수이다. 더하여 입력 값에 {@link IIamportSubscription.IOnetime.customer_uid} 를\n기입하는 경우, 결제에 사용한 카드를 그대로 간편 결제용 카드\n{@link IIamportSubscription} 로 등록해버린다.\n\n다만, 정히 간편 카드 등록과 결제를 동시에 하고 싶다면,\n`subscribe.payments.onetime` 에 {@link IIamportSubscription.IOnetime.customer_uid}\n를 더하기보다, {@link subscribe.customers.create} 와 {@link subscribe.payments.again}\n을 각각 호출하는 것을 권장한다. 그것이 예외적인 상황에 보다 안전하게 대처할 수 있기\n때문이다.\n\n더하여 `subscribe.payments.onetime` 은 클라이언트 어플리케이션이 아임포트가 제공하는\n결제 창을 그대로 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는 일은\n없을 것이다. 다만, 고객이 카드를 통하여 결제하는 상황을 시뮬레이션하기 위하여, 테스트\n자동화 프로그램 수준에서 사용될 수는 있다.", + "security": [ { - "name": "security", - "text": [ - { - "text": "bearer", - "kind": "text" + "bearer": [] + } + ] + } + }, + "/subscribe/payments/again": { + "post": { + "tags": [], + "parameters": [], + "requestBody": { + "description": "미리 등록한 카드를 이용한 결제 신청 정보", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IIamportSubscription.IAgain" } - ] + } }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" + "required": true + }, + "responses": { + "201": { + "description": "카드 결제 정보", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IIamportResponseIIamportCardPayment" + } } - ] + } + } + }, + "summary": "간편 결제에 등록된 카드로 결제하기", + "description": "간편 결제에 등록된 카드로 결제하기.\n\n`subscribe.payments.again` 은 고객이 간편 결제에 등록한 카드로 결제를 진행하고자 할 때\n호출하는 API 함수이다. 이는 간편하고 불편하고를 떠나, 본질적으로 카드 결제의 일환이기에,\n리턴값은 일반적인 카드 결제 때와 동일한 {@link IIamportCardPayment} 이다.\n\n그리고 `subscribe.payments.again` 은 결제 수단 중 유일하게, 클라이언트 어플리케이션이\n아임포트가 제공하는 결체 창을 사용할 수 없어, 오직 귀하의 백엔드 서버가 아임포트의 API\n함수를 직접 호출해야하는 경우에 해당한다. 따라서 간편 결제에 관하여 아임포트 서버와\n연동하는 백엔드 서버 및 프론트 어플리케이션을 개발할 때, 반드시 이 상황에 대한 별도의\n설계 및 개발이 필요하니, 이 점을 염두에 두기 바란다.", + "security": [ + { + "bearer": [] + } + ] + } + }, + "/certifications/{imp_uid}": { + "get": { + "tags": [], + "parameters": [ + { + "name": "imp_uid", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": " 대상 본인인증 정보의 {@link IIamportCertification.imp_uid}" } ], - "x-nestia-method": "GET" + "responses": { + "200": { + "description": "본인인증 정보", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IIamportResponseIIamportCertification" + } + } + } + } + }, + "summary": "본인인증 정보 열람하기", + "description": "본인인증 정보 열람하기.\n\n`certiciations.at` 은 본인인증 정보를 열람할 때 사용하는 API 함수이다.\n\n다만 이 API 함수를 통하여 열람한 본인인증 정보 {@link IIamportCertification} 이\n곧 OTP 인증까지 마쳐 본인인증을 모두 마친 레코드라는 보장은 없다. 본인인증의 완결\n여부는 오직, {@link IIamportCertification.certified} 값을 직접 검사해봐야만 알\n수 있기 때문이다.", + "security": [ + { + "bearer": [] + } + ] }, "delete": { "tags": [], @@ -130,8 +246,8 @@ "schema": { "type": "string" }, - "description": "대상 본인인증 정보의 ", - "required": true + "required": true, + "description": " 대상 본인인증 정보의 {@link IIamportCertification.imp_uid}" } ], "responses": { @@ -140,11 +256,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IIamportResponse_lt_IIamportCertification_gt_" + "$ref": "#/components/schemas/IIamportResponseIIamportCertification" } } - }, - "x-nestia-encrypted": false + } } }, "summary": "본인인증 정보 삭제하기", @@ -153,74 +268,7 @@ { "bearer": [] } - ], - "x-nestia-namespace": "certifications.erase", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "imp_uid", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "대상 본인인증 정보의 ", - "kind": "text" - }, - { - "text": "{@link ", - "kind": "link" - }, - { - "text": "IIamportCertification.imp_uid", - "kind": "linkName", - "target": { - "fileName": "C:/github/samchon/fake-iamport-server/src/api/structures/IIamportCertification.ts", - "textSpan": { - "start": 488, - "length": 16 - } - } - }, - { - "text": "}", - "kind": "link" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "삭제된 본인인증 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "bearer", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "DELETE" + ] } }, "/certifications/otp/request": { @@ -232,12 +280,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IIamportCertification.IStore" + "$ref": "#/components/schemas/IIamportCertification.ICreate" } } }, - "required": true, - "x-nestia-encrypted": false + "required": true }, "responses": { "201": { @@ -245,68 +292,19 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IIamportResponse_lt_IIamportCertification.IAccessor_gt_" + "$ref": "#/components/schemas/IIamportResponseIIamportCertification.IAccessor" } } - }, - "x-nestia-encrypted": false + } } }, "summary": "본인인증 요청하기", - "description": "본인인증 요청하기.\n\n`certifications.otp.request` 는 아임포트 서버에 본인인증을 요청하는 API 함수이다.\n이 API 를 호출하면 본인인증 대상자의 핸드폰으로 OTP 문자가 전송되며, 본인인증\n대상자가 {@link certifications.otp.confirm } 을 통하여 이 OTP 번호를 정확히\n입력함으로써, 본인인증이 완결된다.\n\n또한 본인인증 대상자가 자신의 핸드폰으로 전송된 OTP 문자를 입력하기 전에도,\n여전히해당 본인인증 내역은 {@link certifications.at } 함수를 통하여 조회할 수 있다.\n다만, 이 때 리턴되는 {@link IIamportCertification } 에서 인증의 완결 여부를\n지칭하는 {@link IIamportCertification.certified } 값은 `false` 이다.", + "description": "본인인증 요청하기.\n\n`certifications.otp.request` 는 아임포트 서버에 본인인증을 요청하는 API 함수이다.\n이 API 를 호출하면 본인인증 대상자의 핸드폰으로 OTP 문자가 전송되며, 본인인증\n대상자가 {@link certifications.otp.confirm} 을 통하여 이 OTP 번호를 정확히\n입력함으로써, 본인인증이 완결된다.\n\n또한 본인인증 대상자가 자신의 핸드폰으로 전송된 OTP 문자를 입력하기 전에도,\n여전히해당 본인인증 내역은 {@link certifications.at} 함수를 통하여 조회할 수 있다.\n다만, 이 때 리턴되는 {@link IIamportCertification} 에서 인증의 완결 여부를\n지칭하는 {@link IIamportCertification.certified} 값은 `false` 이다.", "security": [ { "bearer": [] } - ], - "x-nestia-namespace": "certifications.otp.request.request", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "input", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "본인인증 요청 정보", - "kind": "text" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "진행 중인 본인인증의 식별자 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "bearer", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "POST" + ] } }, "/certifications/otp/confirm/{imp_uid}": { @@ -319,8 +317,8 @@ "schema": { "type": "string" }, - "description": "대상 본인인증 정보의 ", - "required": true + "required": true, + "description": " 대상 본인인증 정보의 {@link IIamportCertification.imp_uid}" } ], "requestBody": { @@ -332,8 +330,7 @@ } } }, - "required": true, - "x-nestia-encrypted": false + "required": true }, "responses": { "201": { @@ -341,104 +338,19 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IIamportResponse_lt_IIamportCertification_gt_" + "$ref": "#/components/schemas/IIamportResponseIIamportCertification" } } - }, - "x-nestia-encrypted": false + } } }, "summary": "본인인증 시 발급된 OTP 코드 입력하기", - "description": "본인인증 시 발급된 OTP 코드 입력하기.\n\n`certifications.otp.confirm` 는 {@link certifications.otp.request } 를 통하여\n발급된 본인인증 건에 대하여, 본인인증 대상자의 휴대폰으로 전송된 OTP 번호를\n검증하고, 입력한 OTP 번호가 맞거든 해당 본인인증 건을 승인하여 완료 처리해주는\nAPI 함수이다.\n\n이처럼 본인인증을 완료하거든, 해당 본인인증 건 {@link IIamportCertification } 의\n{@link IIamportCertification.certified } 값이 비로소 `true` 로 변경되어,\n비로소 완결된다.", + "description": "본인인증 시 발급된 OTP 코드 입력하기.\n\n`certifications.otp.confirm` 는 {@link certifications.otp.request} 를 통하여\n발급된 본인인증 건에 대하여, 본인인증 대상자의 휴대폰으로 전송된 OTP 번호를\n검증하고, 입력한 OTP 번호가 맞거든 해당 본인인증 건을 승인하여 완료 처리해주는\nAPI 함수이다.\n\n이처럼 본인인증을 완료하거든, 해당 본인인증 건 {@link IIamportCertification} 의\n{@link IIamportCertification.certified} 값이 비로소 `true` 로 변경되어,\n비로소 완결된다.", "security": [ { "bearer": [] } - ], - "x-nestia-namespace": "certifications.otp.confirm.confirm", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "imp_uid", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "대상 본인인증 정보의 ", - "kind": "text" - }, - { - "text": "{@link ", - "kind": "link" - }, - { - "text": "IIamportCertification.imp_uid", - "kind": "linkName", - "target": { - "fileName": "C:/github/samchon/fake-iamport-server/src/api/structures/IIamportCertification.ts", - "textSpan": { - "start": 488, - "length": 16 - } - } - }, - { - "text": "}", - "kind": "link" - } - ] - }, - { - "name": "param", - "text": [ - { - "text": "input", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "OTP 코드", - "kind": "text" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "인증 완료된 본인인증 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "bearer", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "POST" + ] } }, "/internal/webhook": { @@ -454,51 +366,19 @@ } } }, - "required": true, - "x-nestia-encrypted": false + "required": true }, "responses": { "201": { - "description": "", - "x-nestia-encrypted": false + "description": "" } }, "summary": "웹훅 이벤트 더미 리스너", - "description": "웹훅 이벤트 더미 리스너.\n\n`internal.webhook` 은 실제 아임포트의 서버에는 존재하지 않는 API 로써,\n`fake-impoart-server` 의 {@link Configuration.WEBHOOK_URL } 에 아무런 URL 을 설정하지\n않으면, `fake-iamport-server` 로부터 발생하는 모든 종류의 웹훅 이벤트는 이 곳으로 전달되어\n무의미하게 사라진다.\n\n따라서 `fake-iamport-server` 를 사용하여 아임포트 서버와의 연동을 미리 검증코자 할 때는,\n반드시 {@link Configuration.WEBHOOK_URL } 를 설정하여 웹훅 이벤트가 귀하의 백엔드 서버로\n제대로 전달되도록 하자.", - "x-nestia-namespace": "internal.webhook.webhook", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "input", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "웹훅 이벤트 정보", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "POST" + "description": "웹훅 이벤트 더미 리스너.\n\n`internal.webhook` 은 실제 아임포트의 서버에는 존재하지 않는 API 로써,\n`fake-impoart-server` 의 {@link Configuration.WEBHOOK_URL} 에 아무런 URL 을 설정하지\n않으면, `fake-iamport-server` 로부터 발생하는 모든 종류의 웹훅 이벤트는 이 곳으로 전달되어\n무의미하게 사라진다.\n\n따라서 `fake-iamport-server` 를 사용하여 아임포트 서버와의 연동을 미리 검증코자 할 때는,\n반드시 {@link Configuration.WEBHOOK_URL} 를 설정하여 웹훅 이벤트가 귀하의 백엔드 서버로\n제대로 전달되도록 하자." } }, "/internal/deposit/{imp_uid}": { - "get": { + "put": { "tags": [], "parameters": [ { @@ -507,14 +387,13 @@ "schema": { "type": "string" }, - "description": "대상 결제의 ", - "required": true + "required": true, + "description": " 대상 결제의 {@link IIamportVBankPayment.imp_uid }" } ], "responses": { "200": { - "description": "", - "x-nestia-encrypted": false + "description": "" } }, "summary": "가상 계좌에 입금하기", @@ -523,58 +402,7 @@ { "bearer": [] } - ], - "x-nestia-namespace": "internal.deposit.deposit", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "imp_uid", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "대상 결제의 ", - "kind": "text" - }, - { - "text": "{@link ", - "kind": "link" - }, - { - "text": "IIamportVBankPayment.imp_uid ", - "kind": "linkText" - }, - { - "text": "}", - "kind": "link" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "bearer", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "GET" + ] } }, "/payments/{imp_uid}": { @@ -587,17 +415,20 @@ "schema": { "type": "string" }, - "description": "대상 결제 기록의 ", - "required": true + "required": true, + "description": " 대상 결제 기록의 {@link IIamportPayment.imp_uid}" }, { - "name": "query", + "name": "extension", "in": "query", "schema": { - "$ref": "#/components/schemas/IIamportPayment.IQuery" + "type": "boolean", + "title": "페이팔의 경우, 이 값을 `true` 로 할 것", + "description": "페이팔의 경우, 이 값을 `true` 로 할 것." }, - "description": "결제 수단이 페이팔인 경우에 사용", - "required": true + "required": false, + "title": "페이팔의 경우, 이 값을 `true` 로 할 것", + "description": "페이팔의 경우, 이 값을 `true` 로 할 것." } ], "responses": { @@ -606,11 +437,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IIamportResponse_lt_IIamportPayment_gt_" + "$ref": "#/components/schemas/IIamportResponseIIamportPayment" } } - }, - "x-nestia-encrypted": false + } } }, "summary": "결제 기록 열람하기", @@ -619,91 +449,7 @@ { "bearer": [] } - ], - "x-nestia-namespace": "payments.at", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "imp_uid", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "대상 결제 기록의 ", - "kind": "text" - }, - { - "text": "{@link ", - "kind": "link" - }, - { - "text": "IIamportPayment.imp_uid", - "kind": "linkName", - "target": { - "fileName": "C:/github/samchon/fake-iamport-server/src/api/structures/IIamportPayment.ts", - "textSpan": { - "start": 2339, - "length": 16 - } - } - }, - { - "text": "}", - "kind": "link" - } - ] - }, - { - "name": "param", - "text": [ - { - "text": "query", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "결제 수단이 페이팔인 경우에 사용", - "kind": "text" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "결제 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "bearer", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "GET" + ] } }, "/payments/cancel": { @@ -715,12 +461,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IIamportPaymentCancel.IStore" + "$ref": "#/components/schemas/IIamportPaymentCancel.ICreate" } } }, - "required": true, - "x-nestia-encrypted": false + "required": true }, "responses": { "201": { @@ -728,11 +473,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IIamportResponse_lt_IIamportPayment_gt_" + "$ref": "#/components/schemas/IIamportResponseIIamportPayment" } } - }, - "x-nestia-encrypted": false + } } }, "summary": "결제 취소하기", @@ -741,55 +485,7 @@ { "bearer": [] } - ], - "x-nestia-namespace": "payments.cancel.cancel", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "input", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "결제 취소 입력 정보", - "kind": "text" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "취소된 결제 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "bearer", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "POST" + ] } }, "/receipts/{imp_uid}": { @@ -802,8 +498,8 @@ "schema": { "type": "string" }, - "description": "귀속 결제의 ", - "required": true + "required": true, + "description": " 귀속 결제의 {@link IIamportPayment.imp_uid}" } ], "responses": { @@ -812,11 +508,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IIamportResponse_lt_IIamportReceipt_gt_" + "$ref": "#/components/schemas/IIamportResponseIIamportReceipt" } } - }, - "x-nestia-encrypted": false + } } }, "summary": "현금 영수증 조회하기", @@ -825,74 +520,7 @@ { "bearer": [] } - ], - "x-nestia-namespace": "receipts.at", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "imp_uid", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "귀속 결제의 ", - "kind": "text" - }, - { - "text": "{@link ", - "kind": "link" - }, - { - "text": "IIamportPayment.imp_uid", - "kind": "linkName", - "target": { - "fileName": "C:/github/samchon/fake-iamport-server/src/api/structures/IIamportPayment.ts", - "textSpan": { - "start": 2339, - "length": 16 - } - } - }, - { - "text": "}", - "kind": "link" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "현금 영수증 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "bearer", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "GET" + ] }, "post": { "tags": [], @@ -903,8 +531,8 @@ "schema": { "type": "string" }, - "description": "귀속 결제의 ", - "required": true + "required": true, + "description": " 귀속 결제의 {@link IIamportPayment.imp_uid}" } ], "requestBody": { @@ -912,12 +540,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IIamportReceipt.IStore" + "$ref": "#/components/schemas/IIamportReceipt.ICreate" } } }, - "required": true, - "x-nestia-encrypted": false + "required": true }, "responses": { "201": { @@ -925,11 +552,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IIamportResponse_lt_IIamportReceipt_gt_" + "$ref": "#/components/schemas/IIamportResponseIIamportReceipt" } } - }, - "x-nestia-encrypted": false + } } }, "summary": "현금 영수증 발행하기", @@ -938,91 +564,7 @@ { "bearer": [] } - ], - "x-nestia-namespace": "receipts.store", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "imp_uid", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "귀속 결제의 ", - "kind": "text" - }, - { - "text": "{@link ", - "kind": "link" - }, - { - "text": "IIamportPayment.imp_uid", - "kind": "linkName", - "target": { - "fileName": "C:/github/samchon/fake-iamport-server/src/api/structures/IIamportPayment.ts", - "textSpan": { - "start": 2339, - "length": 16 - } - } - }, - { - "text": "}", - "kind": "link" - } - ] - }, - { - "name": "param", - "text": [ - { - "text": "input", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "현금 영수증 입력 정보", - "kind": "text" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "현금 영수증 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "bearer", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "POST" + ] }, "delete": { "tags": [], @@ -1033,8 +575,8 @@ "schema": { "type": "string" }, - "description": "귀속 결제의 ", - "required": true + "required": true, + "description": " 귀속 결제의 {@link IIamportPayment.imp_uid}" } ], "responses": { @@ -1043,11 +585,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IIamportResponse_lt_IIamportReceipt_gt_" + "$ref": "#/components/schemas/IIamportResponseIIamportReceipt" } } - }, - "x-nestia-encrypted": false + } } }, "summary": "현금 영수증 취소하기", @@ -1056,74 +597,7 @@ { "bearer": [] } - ], - "x-nestia-namespace": "receipts.erase", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "imp_uid", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "귀속 결제의 ", - "kind": "text" - }, - { - "text": "{@link ", - "kind": "link" - }, - { - "text": "IIamportPayment.imp_uid", - "kind": "linkName", - "target": { - "fileName": "C:/github/samchon/fake-iamport-server/src/api/structures/IIamportPayment.ts", - "textSpan": { - "start": 2339, - "length": 16 - } - } - }, - { - "text": "}", - "kind": "link" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "취소된 현금 영수증 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "bearer", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "DELETE" + ] } }, "/users/getToken": { @@ -1139,8 +613,7 @@ } } }, - "required": true, - "x-nestia-encrypted": false + "required": true }, "responses": { "201": { @@ -1148,54 +621,14 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IIamportResponse_lt_IIamportUser_gt_" + "$ref": "#/components/schemas/IIamportResponseIIamportUser" } } - }, - "x-nestia-encrypted": false + } } }, "summary": "유저 인증 토큰 발행하기", - "description": "유저 인증 토큰 발행하기.\n\n아임포트에 가입하여 부여받은 API 및 secret 키를 토대로, 유저 인증 토큰을 발행한다.\n\n단, 아임포트가 발급해주는 유저 인증 토큰에는 유효 시간 {@link IIamportUser.expired_at }\n이 있어, 해당 시간이 지나거든 기 발급 토큰이 만료되어 더 이상 쓸 수 없게 된다. 때문에\n아임포트의 이러한 시간 제한에 구애받지 않고 자유로이 아임포트의 API 를 이용하고 싶다면,\n`iamport-server-api` 에서 제공해주는 {@link IamportConnector } 를 활용하도록 하자.", - "x-nestia-namespace": "users.getToken.getToken", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "input", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "아임포트의 API 및 secret 키 정보", - "kind": "text" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "유저 인증 토큰 정보", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "POST" + "description": "유저 인증 토큰 발행하기.\n\n아임포트에 가입하여 부여받은 API 및 secret 키를 토대로, 유저 인증 토큰을 발행한다.\n\n단, 아임포트가 발급해주는 유저 인증 토큰에는 유효 시간 {@link IIamportUser.expired_at}\n이 있어, 해당 시간이 지나거든 기 발급 토큰이 만료되어 더 이상 쓸 수 없게 된다. 때문에\n아임포트의 이러한 시간 제한에 구애받지 않고 자유로이 아임포트의 API 를 이용하고 싶다면,\n`iamport-server-api` 에서 제공해주는 {@link IamportConnector} 를 활용하도록 하자." } }, "/vbanks": { @@ -1207,12 +640,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IIamportVBankPayment.IStore" + "$ref": "#/components/schemas/IIamportVBankPayment.ICreate" } } }, - "required": true, - "x-nestia-encrypted": false + "required": true }, "responses": { "201": { @@ -1220,11 +652,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IIamportResponse_lt_IIamportVBankPayment_gt_" + "$ref": "#/components/schemas/IIamportResponseIIamportVBankPayment" } } - }, - "x-nestia-encrypted": false + } } }, "summary": "가상 계좌 발급하기", @@ -1233,55 +664,7 @@ { "bearer": [] } - ], - "x-nestia-namespace": "vbanks.store", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "input", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "가상 계좌 입력 정보", - "kind": "text" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "가상 계좌 결제 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "bearer", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "POST" + ] }, "put": { "tags": [], @@ -1295,20 +678,18 @@ } } }, - "required": true, - "x-nestia-encrypted": false + "required": true }, "responses": { - "201": { + "200": { "description": "편집된 가상 계좌 결제 정보", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IIamportResponse_lt_IIamportVBankPayment_gt_" + "$ref": "#/components/schemas/IIamportResponseIIamportVBankPayment" } } - }, - "x-nestia-encrypted": false + } } }, "summary": "가상 계좌 편집하기", @@ -1317,1200 +698,628 @@ { "bearer": [] } - ], - "x-nestia-namespace": "vbanks.update", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "input", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "가상 계좌 편집 입력 정보", - "kind": "text" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "편집된 가상 계좌 결제 정보", - "kind": "text" - } - ] + ] + } + } + }, + "components": { + "schemas": { + "IIamportResponseIIamportSubscription": { + "type": "object", + "properties": { + "code": { + "type": "number", + "title": "에러 코드", + "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻." }, - { - "name": "security", - "text": [ - { - "text": "bearer", - "kind": "text" - } - ] + "message": { + "type": "string", + "title": "성공 또는 오류 메시지", + "description": "성공 또는 오류 메시지." }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "PUT" - } - }, - "/subscribe/customers/{customer_uid}": { - "get": { - "tags": [], - "parameters": [ - { - "name": "customer_uid", - "in": "path", - "schema": { - "type": "string" - }, - "description": "고객 (간편 결제 카드) 식별자 키", - "required": true - } - ], - "responses": { - "200": { - "description": "간편 결제 카드 정보", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/IIamportResponse_lt_IIamportSubscription_gt_" - } - } - }, - "x-nestia-encrypted": false + "response": { + "$ref": "#/components/schemas/IIamportSubscription", + "title": "응답 데이터, 사실상 본문", + "description": "응답 데이터, 사실상 본문." } }, - "summary": "간편 결제 카드 정보 조회하기", - "description": "간편 결제 카드 정보 조회하기.\n\n`subscribe.customers.at` 은 고객이 {@link store } 나 혹은 아임포트가 제공하는\n간편 결제 카드 등록 창을 이용하여 저장한 간편 결제 카드 정보를 조회하는 API\n함수이다.", - "security": [ - { - "bearer": [] - } + "required": [ + "code", + "message", + "response" ], - "x-nestia-namespace": "subscribe.customers.at", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "customer_uid", - "kind": "parameterName" - }, + "description": "아임포트 고유의 응답 데이터." + }, + "IIamportSubscription": { + "type": "object", + "properties": { + "pg_provider": { + "type": "string" + }, + "pg_id": { + "type": "string" + }, + "card_name": { + "type": "string" + }, + "card_code": { + "type": "string" + }, + "card_number": { + "type": "string" + }, + "card_type": { + "type": "string" + }, + "customer_name": { + "oneOf": [ { - "text": " ", - "kind": "space" + "type": "null" }, { - "text": "고객 (간편 결제 카드) 식별자 키", - "kind": "text" + "type": "string" } ] }, - { - "name": "returns", - "text": [ + "customer_tel": { + "oneOf": [ { - "text": "간편 결제 카드 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ + "type": "null" + }, { - "text": "bearer", - "kind": "text" + "type": "string" } ] }, - { - "name": "author", - "text": [ + "customer_email": { + "oneOf": [ { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" + "type": "null" + }, + { + "type": "string" } ] - } - ], - "x-nestia-method": "GET" - }, - "post": { - "tags": [], - "parameters": [ - { - "name": "customer_uid", - "in": "path", - "schema": { - "type": "string" - }, - "description": "고객 (간편 결제 카드) 식별자 키", - "required": true - } - ], - "requestBody": { - "description": "카드 입력 정보", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/IIamportSubscription.IStore" - } - } }, - "required": true, - "x-nestia-encrypted": false - }, - "responses": { - "201": { - "description": "간편 결제 카드 정보", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/IIamportResponse_lt_IIamportSubscription_gt_" - } - } - }, - "x-nestia-encrypted": false - } - }, - "summary": "간편 결제 카드 등록하기", - "description": "간편 결제 카드 등록하기.\n\n`subscribe.customers.stoer` 는 고객이 자신의 카드를 서버에 등록해두고, 매번 결제가\n필요할 때마다 카드 정보를 반복 입력하는 일 없이, 간편하게 결제를 진행하고자 할 때\n사용하는 API 함수이다.\n\n참고로 `subscribe.customers.store` 는 클라이언트 어플리케이션이 아임포트가 제공하는\n간편 결제 카드 등록 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는\n일은 없을 것이다. 다만, 고객이 간편 결제 카드를 등록하는 상황을 시뮬레이션하기 위하여,\n테스트 자동화 프로그램 수준에서 사용될 수는 있다.", - "security": [ - { - "bearer": [] - } - ], - "x-nestia-namespace": "subscribe.customers.store", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "customer_uid", - "kind": "parameterName" - }, + "customer_addr": { + "oneOf": [ { - "text": " ", - "kind": "space" + "type": "null" }, { - "text": "고객 (간편 결제 카드) 식별자 키", - "kind": "text" + "type": "string" } ] }, - { - "name": "param", - "text": [ - { - "text": "input", - "kind": "parameterName" - }, + "customer_postcode": { + "oneOf": [ { - "text": " ", - "kind": "space" + "type": "null" }, { - "text": "카드 입력 정보", - "kind": "text" + "type": "string" } ] }, - { - "name": "returns", - "text": [ - { - "text": "간편 결제 카드 정보", - "kind": "text" - } - ] + "inserted": { + "type": "number" }, - { - "name": "security", - "text": [ - { - "text": "bearer", - "kind": "text" - } - ] + "updated": { + "type": "number" }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "POST" - }, - "delete": { - "tags": [], - "parameters": [ - { - "name": "customer_uid", - "in": "path", - "schema": { - "type": "string" - }, - "description": "고객 (간편 결제 카드) 식별자 키", - "required": true + "customer_uid": { + "type": "string", + "title": "고객 식별자 키", + "description": "고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함." } - ], - "responses": { - "200": { - "description": "삭제된 간편 결제 카드 정보", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/IIamportResponse_lt_IIamportSubscription_gt_" - } - } - }, - "x-nestia-encrypted": false - } - }, - "summary": "간편 결제 카드 삭제하기", - "description": "간편 결제 카드 삭제하기.\n\n간편 결제를 위하여 등록한 카드를 제거한다.", - "security": [ - { - "bearer": [] - } - ], - "x-nestia-namespace": "subscribe.customers.erase", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "customer_uid", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "고객 (간편 결제 카드) 식별자 키", - "kind": "text" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "삭제된 간편 결제 카드 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "bearer", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "DELETE" - } - }, - "/subscribe/payments/onetime": { - "post": { - "tags": [], - "parameters": [], - "requestBody": { - "description": "카드 결제 신청 정보", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/IIamportSubscription.IOnetime" - } - } - }, - "required": true, - "x-nestia-encrypted": false - }, - "responses": { - "201": { - "description": "카드 결제 정보", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/IIamportResponse_lt_IIamportCardPayment_gt_" - } - } - }, - "x-nestia-encrypted": false - } - }, - "summary": "카드로 결제하기, 더불어 간편 결제용으로 등록 가능", - "description": "카드로 결제하기, 더불어 간편 결제용으로 등록 가능.\n\n`subscribe.payments.onetime` 은 카드를 매개로 한 결제를 하고자 할 때 호출하는 API\n함수이다. 더하여 입력 값에 {@link IIamportSubscription.IOnetime.customer_uid } 를\n기입하는 경우, 결제에 사용한 카드를 그대로 간편 결제용 카드\n{@link IIamportSubscription } 로 등록해버린다.\n\n다만, 정히 간편 카드 등록과 결제를 동시에 하고 싶다면,\n`subscribe.payments.onetime` 에 {@link IIamportSubscription.IOnetime.customer_uid }\n를 더하기보다, {@link subscribe.customers.store } 와 {@link subscribe.payments.again }\n을 각각 호출하는 것을 권장한다. 그것이 예외적인 상황에 보다 안전하게 대처할 수 있기\n때문이다.\n\n더하여 `subscribe.payments.onetime` 은 클라이언트 어플리케이션이 아임포트가 제공하는\n결제 창을 그대로 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는 일은\n없을 것이다. 다만, 고객이 카드를 통하여 결제하는 상황을 시뮬레이션하기 위하여, 테스트\n자동화 프로그램 수준에서 사용될 수는 있다.", - "security": [ - { - "bearer": [] - } - ], - "x-nestia-namespace": "subscribe.payments.onetime.onetime", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "input", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "카드 결제 신청 정보", - "kind": "text" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "카드 결제 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "bearer", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "POST" - } - }, - "/subscribe/payments/again": { - "post": { - "tags": [], - "parameters": [], - "requestBody": { - "description": "미리 등록한 카드를 이용한 결제 신청 정보", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/IIamportSubscription.IAgain" - } - } - }, - "required": true, - "x-nestia-encrypted": false }, - "responses": { - "201": { - "description": "카드 결제 정보", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/IIamportResponse_lt_IIamportCardPayment_gt_" - } - } - }, - "x-nestia-encrypted": false - } - }, - "summary": "간편 결제에 등록된 카드로 결제하기", - "description": "간편 결제에 등록된 카드로 결제하기.\n\n`subscribe.payments.again` 은 고객이 간편 결제에 등록한 카드로 결제를 진행하고자 할 때\n호출하는 API 함수이다. 이는 간편하고 불편하고를 떠나, 본질적으로 카드 결제의 일환이기에,\n리턴값은 일반적인 카드 결제 때와 동일한 {@link IIamportCardPayment } 이다.\n\n그리고 `subscribe.payments.again` 은 결제 수단 중 유일하게, 클라이언트 어플리케이션이\n아임포트가 제공하는 결체 창을 사용할 수 없어, 오직 귀하의 백엔드 서버가 아임포트의 API\n함수를 직접 호출해야하는 경우에 해당한다. 따라서 간편 결제에 관하여 아임포트 서버와\n연동하는 백엔드 서버 및 프론트 어플리케이션을 개발할 때, 반드시 이 상황에 대한 별도의\n설계 및 개발이 필요하니, 이 점을 염두에 두기 바란다.", - "security": [ - { - "bearer": [] - } - ], - "x-nestia-namespace": "subscribe.payments.again.again", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "input", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "미리 등록한 카드를 이용한 결제 신청 정보", - "kind": "text" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "카드 결제 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "bearer", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "POST" - } - } - }, - "components": { - "schemas": { - "IIamportResponse_lt_IIamportCertification_gt_": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "response": { - "$ref": "#/components/schemas/IIamportCertification" - } - }, - "nullable": false, "required": [ - "code", - "message", - "response" + "pg_provider", + "pg_id", + "card_name", + "card_code", + "card_number", + "card_type", + "customer_name", + "customer_tel", + "customer_email", + "customer_addr", + "customer_postcode", + "inserted", + "updated", + "customer_uid" ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] + "description": "간편 결제 카드 정보." }, - "IIamportCertification": { + "IIamportSubscription.ICreate": { "type": "object", "properties": { - "imp_uid": { - "description": "아임포트가 발급해 준 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "merchant_uid": { - "description": "서비스로부터의 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, + "card_number": { "type": "string", - "nullable": true + "pattern": "\\d{4}-\\d{4}-\\d{4}-\\d{4}", + "title": "카드 번호", + "description": "카드 번호.\n\n형식: XXXX-XXXX-XXXX-XXXX" }, - "name": { - "description": "본인인증대상자 성명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "gender": { - "description": "성별.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "expiry": { + "type": "string", + "pattern": "^([0-9]{4})-(0[1-9]|1[012])$", + "title": "카드 유효기간", + "description": "카드 유효기간.\n\n형식: YYYY-MM" }, "birth": { - "description": "생년월일.\n\n리눅스 타임이 쓰인다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "birthday": { - "description": "생년월일, YYYYMMDD 형식.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "pattern": "^([0-9]{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$" - }, - "foreigner": { - "description": "외국인 여부.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "boolean" - }, - "phone": { - "description": "본인인증 대상자 핸드폰 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "pattern": "^(([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01]))|(\\d{10})$", + "title": "생년월일 YYMMDD 또는 사업자등록번호 10자리", + "description": "생년월일 YYMMDD 또는 사업자등록번호 10자리." }, - "carrier": { - "description": "본인인증 대상자 통신사 코드.", - "x-typia-required": true, - "x-typia-optional": false, + "pwd_2digit": { "type": "string", - "enum": [ - "SKT", - "KT", - "LGT" - ] + "pattern": "\\d{2}", + "title": "카드 비밀번호 앞 두 자리", + "description": "카드 비밀번호 앞 두 자리." }, - "certified": { - "description": "OTP 인증 여부.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "boolean" - }, - "certified_at": { - "description": "OTP 인증 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "cvc": { + "type": "string", + "pattern": "\\d{2}", + "title": "카드 인증번호 (카드 뒷면 3 자리)", + "description": "카드 인증번호 (카드 뒷면 3 자리)." }, - "unique_key": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, + "customer_name": { "type": "string" }, - "unique_in_site": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, + "customer_tel": { "type": "string" }, - "pg_tid": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "customer_email": { + "type": "string", + "format": "email" }, - "pg_provider": { - "description": "PG 제공자.", - "x-typia-required": true, - "x-typia-optional": false, + "customr_addr": { "type": "string" }, - "origin": { - "description": "뭔지 잘 모름, 용도 아시는 분?", - "x-typia-required": true, - "x-typia-optional": false, + "customer_postcode": { "type": "string" }, - "__otp": { - "description": "(테스트 전용) OTP 코드.\n\n오직 `fake-iamport-server` 에서만 쓰이는 속성으로써, 본인인증을 시뮬레이션할 때,\n어떠한 OTP 코드가 발급되었는 지를 확인하기 위하여 사용된다. 이를 이용하여\n{@link functional.certifications.otp.confirm } 함수를 호출하면, 본인인증을 완료할\n수 있다.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "customer_uid": { + "type": "string", + "title": "고객 식별자 키", + "description": "고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함." } }, - "nullable": false, "required": [ - "imp_uid", - "merchant_uid", - "name", - "gender", + "card_number", + "expiry", "birth", - "birthday", - "foreigner", - "phone", - "carrier", - "certified", - "certified_at", - "unique_key", - "unique_in_site", - "pg_tid", - "pg_provider", - "origin" + "customer_uid" ], - "description": "본인 인증 내역.\n\n`IIamportCertification` 은 아임포트의 본인인증 정보를 형상화한 자료구조 인터페이스이다.\n\n단, `IIamportCertification` 레코드의 존재가 곧 본인인증의 완결을 뜻하는 것은 아니다.\n{@link IIamportCertification.certified } 값이 `true` 여야만이 비로소, 본인인증\n대상자가 자신의 핸드폰 번호로 전송된 OTP 를 아임포트의 본인인증 팝업창에 정확히 적어,\n본인인증을 완료했음을 의미한다.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] + "description": "간편 결제 카드 입력 정보." }, - "IIamportCertification.IStore": { + "IIamportSubscription.IOnetime": { "type": "object", "properties": { - "name": { - "description": "본인인증대상자 성명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "customer_uid": { + "type": "string", + "title": "고객 식별자 키", + "description": "고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함.\n\n이를 생략시 단순 결제로만 그치며, 카드 정보가 간편 결제용으로 등록되지 아니함." }, - "phone": { - "description": "본인인증 대상자 핸드폰 번호.\n\n핸드폰 번호에 \"-\" 값이 들어가던 아니던 상관 없음.\n\n다만, 내부적으로는 \"-\" 값을 제거하여 처리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "card_number": { + "type": "string", + "pattern": "\\d{4}-\\d{4}-\\d{4}-\\d{4}", + "title": "카드 번호", + "description": "카드 번호.\n\n형식: XXXX-XXXX-XXXX-XXXX" }, - "birth": { - "description": "생년월일.\n\nYYYYMMDD 형식.", - "x-typia-required": true, - "x-typia-optional": false, + "expiry": { "type": "string", - "pattern": "^([0-9]{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$" + "pattern": "^([0-9]{4})-(0[1-9]|1[012])$", + "title": "카드 유효기간", + "description": "카드 유효기간.\n\n형식: YYYY-MM" }, - "gender_digit": { - "description": "주민등록 뒷부분 첫 자리.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "birth": { + "type": "string", + "pattern": "^(([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01]))|(\\d{10})$", + "title": "생년월일 YYMMDD 또는 사업자등록번호 10자리", + "description": "생년월일 YYMMDD 또는 사업자등록번호 10자리." }, - "carrier": { - "description": "본인인증 대상자 통신사 코드.", - "x-typia-required": true, - "x-typia-optional": false, + "pwd_2digit": { "type": "string", - "enum": [ - "SKT", - "KT", - "LGT" - ] + "pattern": "\\d{2}", + "title": "카드 비밀번호 앞 두 자리", + "description": "카드 비밀번호 앞 두 자리." }, - "is_mvno": { - "description": "알뜰폰 여부.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "boolean" + "cvc": { + "type": "string", + "pattern": "\\d{2}", + "title": "카드 인증번호 (카드 뒷면 3 자리)", + "description": "카드 인증번호 (카드 뒷면 3 자리)." }, - "commpany": { - "description": "가맹점 서비스 명칭 또는 domain URL.\n\nKISA 에서 대상자에게 발송하는 SMS에 안내될 서비스 명칭.", - "x-typia-required": false, - "x-typia-optional": true, + "customer_name": { "type": "string" }, - "merchant_uid": { - "description": "귀사 서비스에서의 본인인증 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": false, - "x-typia-optional": true, + "customer_tel": { "type": "string" }, - "pg": { - "description": "PG 사 구분자.\n\n다날 상점아이디를 2개 이상 동시에 사용하시려는 경우에 설정하면 된다.\n\n**danal.{상점아이디}** 형태로 지정.", - "x-typia-required": false, - "x-typia-optional": true, + "customer_email": { + "type": "string", + "format": "email" + }, + "customr_addr": { "type": "string" - } - }, - "nullable": false, - "required": [ - "name", - "phone", - "birth", - "gender_digit", - "carrier" - ], - "description": "본인 인증 입력 정보.", - "x-typia-jsDocTags": [] - }, - "IIamportResponse_lt_IIamportCertification.IAccessor_gt_": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, + "customer_postcode": { "type": "string" }, - "response": { - "$ref": "#/components/schemas/IIamportCertification.IAccessor" - } - }, - "nullable": false, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ + "merchant_uid": { + "type": "string", + "title": "주문 식별자 키", + "description": "주문 식별자 키.\n\n아임포트가 아닌 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키." + }, + "amount": { + "type": "number", + "title": "결제 총액", + "description": "결제 총액." + }, + "name": { + "type": "string", + "title": "주문 이름", + "description": "주문 이름." + }, + "currency": { + "oneOf": [ + { + "const": "KRW" + }, { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" + "const": "USD" + }, + { + "const": "EUR" + }, + { + "const": "JPY" } - ] - } - ] - }, - "IIamportCertification.IAccessor": { - "type": "object", - "properties": { - "imp_uid": { - "description": "본인인증정보의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, + ], + "title": "통화 정보", + "description": "통화 정보." + }, + "tax_free": { + "type": "number", + "title": "면세 공급가액", + "description": "면세 공급가액.\n\n기본값은 0 로써, 알아서 amount 의 1/11 로써 부가세 처리됨." + }, + "card_quota": { + "type": "number", + "title": "할부 개월 수", + "description": "할부 개월 수.\n\n일시불은 0." + }, + "buyer_name": { "type": "string" - } - }, - "nullable": false, - "required": [ - "imp_uid" - ], - "description": "본인인증 정보의 접근자 구조체.", - "x-typia-jsDocTags": [] - }, - "IIamportCertification.IConfirm": { - "type": "object", - "properties": { - "otp": { - "description": "SMS 로 전송된 본인인증 번호.", - "x-typia-required": true, - "x-typia-optional": false, + }, + "buyer_email": { + "type": "string", + "format": "email" + }, + "buyer_tel": { "type": "string" - } - }, - "nullable": false, - "required": [ - "otp" - ], - "description": "본인인증 승인을 위한 입력 정보.", - "x-typia-jsDocTags": [] - }, - "IIamportPayment.IWebhook": { - "type": "object", - "properties": { - "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, + }, + "buyer_addr": { "type": "string" }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, + "buyer_postcode": { "type": "string" }, - "status": { - "description": "현재 상태.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" - ] - } - }, - "nullable": false, - "required": [ - "imp_uid", - "merchant_uid", - "status" - ], - "description": "웹훅 데이터.", - "x-typia-jsDocTags": [] - }, - "IIamportPayment.IQuery": { - "type": "object", - "properties": { - "extension": { - "description": "페이팔의 경우, 이 값을 `true` 로 할 것.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "boolean" - } - }, - "nullable": false, - "description": "결제 수단이 페이팔인 경우, 페이팔의 구매자 보호정책에 의해 결제 승인 시점에\nPending 상태를 만든 후, 내부 심사등을 통해 최종 결제 완료라고 변경함.\n\n`iamport` 의 기술적 이슈로 해당 상태를 status: failed 로 기록함. 추후\n페이팔에서 최종결제완료로 변경된 경우, `iamport` 에서 `paid` 로 변경 후,\n해당건에 대한 웹훅 발송. `iamport` 를 사용하는 고객사에서는, failed 로 이미\n처리된 결제건에 대한 paid 상태의 웹훅을 받는 문제점이 생김.\n\n이에, `iamport` 에서 제공하는 `/payment/{imp_uid}` 에 query-string 으로\n`extension=true` 옵션을 추가해야 함", - "x-typia-jsDocTags": [ - { - "name": "issue", - "text": [ - { - "text": "https://github.com/samchon/fake-iamport-server/issues/13", - "kind": "text" - } - ] + "interest_free_by_merchant": { + "type": "boolean", + "title": "카드할부처리할 때, 할부이자가 발생하는 경우 (카드사 무이자 프로모션 제외)", + "description": "카드할부처리할 때, 할부이자가 발생하는 경우 (카드사 무이자 프로모션 제외).\n\n부과되는 할부이자를 고객대신 가맹점이 지불하고자 PG사와 계약된 경우(현재, 나이스페이먼츠만 지원됨)" }, - { - "name": "author", - "text": [ - { - "text": "Sangjin Han - https://github.com/ltnscp9028", - "kind": "text" - } - ] + "use_card_point": { + "type": "boolean", + "title": "승인요청시 카드사 포인트 차감하며 결제승인처리할지 flag", + "description": "승인요청시 카드사 포인트 차감하며 결제승인처리할지 flag.\n\nPG사 영업담당자와 계약 당시 사전 협의 필요(현재, 나이스페이먼츠만 지원됨)" + }, + "custom_data": { + "type": "string", + "title": "임의 정보를 기재할 수 있다", + "description": "임의 정보를 기재할 수 있다." + }, + "notice_url": { + "type": "string", + "format": "uri", + "title": "결제 성공시 통지될 Notification, 웹훅 URL", + "description": "결제 성공시 통지될 Notification, 웹훅 URL." } - ] + }, + "required": [ + "card_number", + "expiry", + "birth", + "merchant_uid", + "amount", + "name" + ], + "description": "결제 신청 입력 정보." }, - "IIamportResponse_lt_IIamportPayment_gt_": { + "IIamportResponseIIamportCardPayment": { "type": "object", "properties": { "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "에러 코드", + "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻." }, "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "성공 또는 오류 메시지", + "description": "성공 또는 오류 메시지." }, "response": { - "$ref": "#/components/schemas/IIamportPayment" + "$ref": "#/components/schemas/IIamportCardPayment", + "title": "응답 데이터, 사실상 본문", + "description": "응답 데이터, 사실상 본문." } }, - "nullable": false, "required": [ "code", "message", "response" ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] - }, - "IIamportPayment": { - "oneOf": [ - { - "$ref": "#/components/schemas/IIamportCardPayment" - }, - { - "$ref": "#/components/schemas/IIamportTransferPayment" - }, - { - "$ref": "#/components/schemas/IIamportVBankPayment" - }, - { - "$ref": "#/components/schemas/IIamportPayment.IBase_lt__doublequote_phone_doublequote__space__or__space__doublequote_kpay_doublequote__space__or__space__doublequote_kakaopay_doublequote__space__or__space__doublequote_payco_doublequote__space__or__space__doublequote_lpay_doublequote__space__or__space__doublequote_ssgpay_doublequote__space__or__space__doublequote_tosspay_doublequote__space__or__space__doublequote_cultureland_doublequote__space__or__space__doublequote_smartculture_doublequote__space__or__space__doublequote_happymoney_doublequote__space__or__space__doublequote_booknlife_doublequote__space__or__space__doublequote_point_doublequote__gt_" - } - ], - "description": "결제 정보.\n\n`IIamportPayment` 는 아임포트의 결제 정보를 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.pay_method === \"card\")\n payment.card_number; // payment be IIamportCardPayment\n```", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] + "description": "아임포트 고유의 응답 데이터." }, "IIamportCardPayment": { "type": "object", "properties": { "card_code": { - "description": "카드 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "카드 식별자 코드", + "description": "카드 식별자 코드." }, "card_name": { - "description": "카드 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "카드 이름", + "description": "카드 이름." }, "card_number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "pattern": "\\d{4}-\\d{4}-\\d{4}-\\d{4}" + "pattern": "\\d{4}-\\d{4}-\\d{4}-\\d{4}", + "title": "카드 번호", + "description": "카드 번호." }, "card_quota": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "integer" + "type": "integer", + "title": "할부 개월 수", + "description": "할부 개월 수." }, "apply_num": { - "description": "카드사 승인번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "카드사 승인번호", + "description": "카드사 승인번호." }, "pay_method": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "card", - "samsung" + "oneOf": [ + { + "const": "card" + }, + { + "const": "samsung" + } ] }, "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "결제 정보 {@link IIamportPayment} 의 식별자 키", + "description": "결제 정보 {@link IIamportPayment} 의 식별자 키." }, "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 식별자 키", + "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다." }, "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ], + "title": "주문명, 누락 가능", + "description": "주문명, 누락 가능." }, "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 총액", + "description": "결제 총액." }, "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 취소, 환불 총액", + "description": "결제 취소, 환불 총액." }, "currency": { - "$ref": "#/components/schemas/IIamportPayment.Currency" + "$ref": "#/components/schemas/IIamportPayment.Currency", + "title": "통화 단위", + "description": "통화 단위." }, "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "format": "url" + "format": "uri", + "title": "영수증 URL", + "description": "영수증 URL." }, "cash_receipt_issue": { - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "boolean" + "type": "boolean", + "title": "현금 영수증 발행 여부", + "description": "현금 영수증 발행 여부." }, "channel": { - "x-typia-required": true, - "x-typia-optional": false, "type": "string" }, "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, "type": "string" }, "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, "type": "string" }, "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, "type": "string" }, "escrow": { - "x-typia-required": true, - "x-typia-optional": false, "type": "boolean" }, "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "format": "email" + } + ] }, "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "status": { - "$ref": "#/components/schemas/IIamportPayment.Status" + "$ref": "#/components/schemas/IIamportPayment.Status", + "title": "결제의 현재 (진행) 상태", + "description": "결제의 현재 (진행) 상태." }, "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 신청 일시", + "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임." }, "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 (지불) 완료 일시", + "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀." }, "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 실패 일시", + "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀." }, "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 취소 일시", + "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀." }, "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, "type": "array", "items": { "$ref": "#/components/schemas/IIamportPaymentCancel" } } }, - "nullable": false, "required": [ "card_code", "card_name", @@ -2550,584 +1359,770 @@ "cancel_reason", "cancel_history" ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] + "description": "카드 결제 정보." }, "IIamportPayment.Currency": { - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" + "oneOf": [ + { + "const": "KRW" + }, + { + "const": "USD" + }, + { + "const": "EUR" + }, + { + "const": "JPY" + } ] }, "IIamportPayment.Status": { - "type": "string", - "enum": [ - "paid", - "ready", - "failed", - "cancelled" + "oneOf": [ + { + "const": "paid" + }, + { + "const": "ready" + }, + { + "const": "failed" + }, + { + "const": "cancelled" + } ] }, "IIamportPaymentCancel": { "type": "object", "properties": { "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, "type": "string" }, "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, "type": "string" }, "amount": { - "x-typia-required": true, - "x-typia-optional": false, "type": "number" }, "cancelled_at": { - "x-typia-required": true, - "x-typia-optional": false, "type": "number" }, "reason": { - "x-typia-required": true, - "x-typia-optional": false, "type": "string" }, - "receipt_url": { - "x-typia-required": true, - "x-typia-optional": false, + "receipt_url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "pg_id", + "pg_tid", + "amount", + "cancelled_at", + "reason", + "receipt_url" + ], + "description": "결제 취소 정보." + }, + "IIamportSubscription.IAgain": { + "type": "object", + "properties": { + "merchant_uid": { + "type": "string", + "title": "주문 식별자 키", + "description": "주문 식별자 키.\n\n아임포트가 아닌 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키." + }, + "amount": { + "type": "number", + "title": "결제 총액", + "description": "결제 총액." + }, + "name": { + "type": "string", + "title": "주문 이름", + "description": "주문 이름." + }, + "currency": { + "oneOf": [ + { + "const": "KRW" + }, + { + "const": "USD" + }, + { + "const": "EUR" + }, + { + "const": "JPY" + } + ], + "title": "통화 정보", + "description": "통화 정보." + }, + "tax_free": { + "type": "number", + "title": "면세 공급가액", + "description": "면세 공급가액.\n\n기본값은 0 로써, 알아서 amount 의 1/11 로써 부가세 처리됨." + }, + "card_quota": { + "type": "number", + "title": "할부 개월 수", + "description": "할부 개월 수.\n\n일시불은 0." + }, + "buyer_name": { + "type": "string" + }, + "buyer_email": { + "type": "string", + "format": "email" + }, + "buyer_tel": { + "type": "string" + }, + "buyer_addr": { + "type": "string" + }, + "buyer_postcode": { + "type": "string" + }, + "interest_free_by_merchant": { + "type": "boolean", + "title": "카드할부처리할 때, 할부이자가 발생하는 경우 (카드사 무이자 프로모션 제외)", + "description": "카드할부처리할 때, 할부이자가 발생하는 경우 (카드사 무이자 프로모션 제외).\n\n부과되는 할부이자를 고객대신 가맹점이 지불하고자 PG사와 계약된 경우(현재, 나이스페이먼츠만 지원됨)" + }, + "use_card_point": { + "type": "boolean", + "title": "승인요청시 카드사 포인트 차감하며 결제승인처리할지 flag", + "description": "승인요청시 카드사 포인트 차감하며 결제승인처리할지 flag.\n\nPG사 영업담당자와 계약 당시 사전 협의 필요(현재, 나이스페이먼츠만 지원됨)" + }, + "custom_data": { + "type": "string", + "title": "임의 정보를 기재할 수 있다", + "description": "임의 정보를 기재할 수 있다." + }, + "notice_url": { + "type": "string", + "format": "uri", + "title": "결제 성공시 통지될 Notification, 웹훅 URL", + "description": "결제 성공시 통지될 Notification, 웹훅 URL." + }, + "customer_uid": { + "type": "string", + "title": "고객 식별자 키", + "description": "고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함." + } + }, + "required": [ + "merchant_uid", + "amount", + "name", + "customer_uid" + ], + "description": "간편 결제 카드로 결제 신청 입력 정보." + }, + "IIamportResponseIIamportCertification": { + "type": "object", + "properties": { + "code": { + "type": "number", + "title": "에러 코드", + "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻." + }, + "message": { "type": "string", - "format": "url" + "title": "성공 또는 오류 메시지", + "description": "성공 또는 오류 메시지." + }, + "response": { + "$ref": "#/components/schemas/IIamportCertification", + "title": "응답 데이터, 사실상 본문", + "description": "응답 데이터, 사실상 본문." } }, - "nullable": false, "required": [ - "pg_id", - "pg_tid", - "amount", - "cancelled_at", - "reason", - "receipt_url" + "code", + "message", + "response" ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] + "description": "아임포트 고유의 응답 데이터." }, - "IIamportTransferPayment": { + "IIamportCertification": { "type": "object", "properties": { - "bank_code": { - "description": "은행 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "bank_name": { - "description": "은행 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pay_method": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "trans" - ] - }, "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "아임포트가 발급해 준 식별자 번호", + "description": "아임포트가 발급해 준 식별자 번호." }, "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ], + "title": "서비스로부터의 식별자 키", + "description": "서비스로부터의 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다." }, "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "nullable": true - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "title": "본인인증대상자 성명", + "description": "본인인증대상자 성명." }, - "currency": { - "$ref": "#/components/schemas/IIamportPayment.Currency" - }, - "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, + "gender": { "type": "string", - "format": "url" + "title": "성별", + "description": "성별." }, - "cash_receipt_issue": { - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "boolean" + "birth": { + "type": "number", + "title": "생년월일", + "description": "생년월일.\n\n리눅스 타임이 쓰인다." }, - "channel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "birthday": { + "type": "string", + "pattern": "^([0-9]{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$", + "title": "생년월일, YYYYMMDD 형식", + "description": "생년월일, YYYYMMDD 형식." }, - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "foreigner": { + "type": "boolean", + "title": "외국인 여부", + "description": "외국인 여부." }, - "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, + "phone": { "type": "string", - "nullable": true + "title": "본인인증 대상자 핸드폰 번호", + "description": "본인인증 대상자 핸드폰 번호." }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "carrier": { + "oneOf": [ + { + "const": "SKT" + }, + { + "const": "KT" + }, + { + "const": "LGT" + } + ], + "title": "본인인증 대상자 통신사 코드", + "description": "본인인증 대상자 통신사 코드." }, - "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "certified": { + "type": "boolean", + "title": "OTP 인증 여부", + "description": "OTP 인증 여부." }, - "escrow": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "boolean" + "certified_at": { + "type": "number", + "title": "OTP 인증 일시", + "description": "OTP 인증 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀." }, - "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, + "unique_key": { "type": "string", - "nullable": true + "description": "뭔지 잘 모름, 용도 아시는 분?" }, - "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, + "unique_in_site": { "type": "string", - "format": "email", - "nullable": true + "description": "뭔지 잘 모름, 용도 아시는 분?" }, - "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, + "pg_tid": { "type": "string", - "nullable": true + "description": "뭔지 잘 모름, 용도 아시는 분?" }, - "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, + "pg_provider": { "type": "string", - "nullable": true + "title": "PG 제공자", + "description": "PG 제공자." }, - "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, + "origin": { "type": "string", - "nullable": true + "description": "뭔지 잘 모름, 용도 아시는 분?" }, - "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, + "__otp": { + "type": "string", + "title": "(테스트 전용) OTP 코드", + "description": "(테스트 전용) OTP 코드.\n\n오직 `fake-iamport-server` 에서만 쓰이는 속성으로써, 본인인증을 시뮬레이션할 때,\n어떠한 OTP 코드가 발급되었는 지를 확인하기 위하여 사용된다. 이를 이용하여\n{@link functional.certifications.otp.confirm} 함수를 호출하면, 본인인증을 완료할\n수 있다." + } + }, + "required": [ + "imp_uid", + "merchant_uid", + "name", + "gender", + "birth", + "birthday", + "foreigner", + "phone", + "carrier", + "certified", + "certified_at", + "unique_key", + "unique_in_site", + "pg_tid", + "pg_provider", + "origin" + ], + "description": "본인 인증 내역.\n\n`IIamportCertification` 은 아임포트의 본인인증 정보를 형상화한 자료구조 인터페이스이다.\n\n단, `IIamportCertification` 레코드의 존재가 곧 본인인증의 완결을 뜻하는 것은 아니다.\n{@link IIamportCertification.certified} 값이 `true` 여야만이 비로소, 본인인증\n대상자가 자신의 핸드폰 번호로 전송된 OTP 를 아임포트의 본인인증 팝업창에 정확히 적어,\n본인인증을 완료했음을 의미한다." + }, + "IIamportCertification.ICreate": { + "type": "object", + "properties": { + "name": { "type": "string", - "nullable": true + "title": "본인인증대상자 성명", + "description": "본인인증대상자 성명." }, - "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, + "phone": { "type": "string", - "nullable": true + "title": "본인인증 대상자 핸드폰 번호", + "description": "본인인증 대상자 핸드폰 번호.\n\n핸드폰 번호에 \"-\" 값이 들어가던 아니던 상관 없음.\n\n다만, 내부적으로는 \"-\" 값을 제거하여 처리한다." }, - "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, + "birth": { "type": "string", - "nullable": true + "pattern": "^([0-9]{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$", + "title": "생년월일", + "description": "생년월일.\n\nYYYYMMDD 형식." }, - "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, + "gender_digit": { "type": "string", - "nullable": true + "title": "주민등록 뒷부분 첫 자리", + "description": "주민등록 뒷부분 첫 자리." }, - "status": { - "$ref": "#/components/schemas/IIamportPayment.Status" + "carrier": { + "oneOf": [ + { + "const": "SKT" + }, + { + "const": "KT" + }, + { + "const": "LGT" + } + ], + "title": "본인인증 대상자 통신사 코드", + "description": "본인인증 대상자 통신사 코드." }, - "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "is_mvno": { + "type": "boolean", + "title": "알뜰폰 여부", + "description": "알뜰폰 여부." }, - "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "commpany": { + "type": "string", + "title": "가맹점 서비스 명칭 또는 domain URL", + "description": "가맹점 서비스 명칭 또는 domain URL.\n\nKISA 에서 대상자에게 발송하는 SMS에 안내될 서비스 명칭." }, - "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "merchant_uid": { + "type": "string", + "title": "귀사 서비스에서의 본인인증 식별자 키", + "description": "귀사 서비스에서의 본인인증 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다." }, - "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "pg": { + "type": "string", + "title": "PG 사 구분자", + "description": "PG 사 구분자.\n\n다날 상점아이디를 2개 이상 동시에 사용하시려는 경우에 설정하면 된다.\n\n**danal.{상점아이디}** 형태로 지정." + } + }, + "required": [ + "name", + "phone", + "birth", + "gender_digit", + "carrier" + ], + "description": "본인 인증 입력 정보." + }, + "IIamportResponseIIamportCertification.IAccessor": { + "type": "object", + "properties": { + "code": { + "type": "number", + "title": "에러 코드", + "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻." }, - "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, + "message": { "type": "string", - "nullable": true + "title": "성공 또는 오류 메시지", + "description": "성공 또는 오류 메시지." }, - "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, + "response": { + "$ref": "#/components/schemas/IIamportCertification.IAccessor", + "title": "응답 데이터, 사실상 본문", + "description": "응답 데이터, 사실상 본문." + } + }, + "required": [ + "code", + "message", + "response" + ], + "description": "아임포트 고유의 응답 데이터." + }, + "IIamportCertification.IAccessor": { + "type": "object", + "properties": { + "imp_uid": { + "type": "string", + "title": "본인인증정보의 식별자 키", + "description": "본인인증정보의 식별자 키." + } + }, + "required": [ + "imp_uid" + ], + "description": "본인인증 정보의 접근자 구조체." + }, + "IIamportCertification.IConfirm": { + "type": "object", + "properties": { + "otp": { + "type": "string", + "title": "SMS 로 전송된 본인인증 번호", + "description": "SMS 로 전송된 본인인증 번호." + } + }, + "required": [ + "otp" + ], + "description": "본인인증 승인을 위한 입력 정보." + }, + "IIamportPayment.IWebhook": { + "type": "object", + "properties": { + "imp_uid": { "type": "string", - "nullable": true + "title": "결제 정보 {@link IIamportPayment} 의 식별자 키", + "description": "결제 정보 {@link IIamportPayment} 의 식별자 키." }, - "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "$ref": "#/components/schemas/IIamportPaymentCancel" - } + "merchant_uid": { + "type": "string", + "title": "주문 식별자 키", + "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다." + }, + "status": { + "oneOf": [ + { + "const": "paid" + }, + { + "const": "ready" + }, + { + "const": "failed" + }, + { + "const": "cancelled" + } + ], + "title": "현재 상태", + "description": "현재 상태." } }, - "nullable": false, "required": [ - "bank_code", - "bank_name", - "pay_method", "imp_uid", "merchant_uid", - "name", - "amount", - "cancel_amount", - "currency", - "receipt_url", - "cash_receipt_issue", - "channel", - "pg_provider", - "emb_pg_provider", - "pg_id", - "pg_tid", - "escrow", - "buyer_name", - "buyer_email", - "buyer_tel", - "buyer_addr", - "buyer_postcode", - "customer_uid", - "customer_uid_usage", - "custom_data", - "user_agent", - "status", - "started_at", - "paid_at", - "failed_at", - "cancelled_at", - "fail_reason", - "cancel_reason", - "cancel_history" + "status" ], - "description": "계좌 이체 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] + "description": "웹훅 데이터." + }, + "IIamportPayment.IQuery": { + "type": "object", + "properties": { + "extension": { + "type": "boolean", + "title": "페이팔의 경우, 이 값을 `true` 로 할 것", + "description": "페이팔의 경우, 이 값을 `true` 로 할 것." } - ] + }, + "description": "결제 수단이 페이팔인 경우, 페이팔의 구매자 보호정책에 의해 결제 승인 시점에\nPending 상태를 만든 후, 내부 심사등을 통해 최종 결제 완료라고 변경함.\n\n`iamport` 의 기술적 이슈로 해당 상태를 status: failed 로 기록함. 추후\n페이팔에서 최종결제완료로 변경된 경우, `iamport` 에서 `paid` 로 변경 후,\n해당건에 대한 웹훅 발송. `iamport` 를 사용하는 고객사에서는, failed 로 이미\n처리된 결제건에 대한 paid 상태의 웹훅을 받는 문제점이 생김.\n\n이에, `iamport` 에서 제공하는 `/payment/{imp_uid}` 에 query-string 으로\n`extension=true` 옵션을 추가해야 함" }, - "IIamportVBankPayment": { + "IIamportResponseIIamportPayment": { "type": "object", "properties": { - "vbank_code": { - "description": "가상 계좌 식별자 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "code": { + "type": "number", + "title": "에러 코드", + "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻." }, - "vbank_name": { - "description": "가상 게좌 이름", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "message": { + "type": "string", + "title": "성공 또는 오류 메시지", + "description": "성공 또는 오류 메시지." }, - "vbank_num": { - "description": "가상 계좌 번호", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "response": { + "$ref": "#/components/schemas/IIamportPayment", + "title": "응답 데이터, 사실상 본문", + "description": "응답 데이터, 사실상 본문." + } + }, + "required": [ + "code", + "message", + "response" + ], + "description": "아임포트 고유의 응답 데이터." + }, + "IIamportPayment": { + "oneOf": [ + { + "$ref": "#/components/schemas/IIamportCardPayment" }, - "vbank_holder": { - "description": "가상 계좌 예금주.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + { + "$ref": "#/components/schemas/IIamportTransferPayment" }, - "vbank_date": { - "description": "가상 계좌 입금 만료 기한.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + { + "$ref": "#/components/schemas/IIamportVBankPayment" }, - "vbank_issued_at": { - "description": "가상 계좌 개설 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + { + "$ref": "#/components/schemas/IIamportPayment.IBasephonekpaykakaopaypaycolpayssgpaytosspayculturelandsmartculturehappymoneybooknlifepoint" + } + ], + "description": "결제 정보.\n\n`IIamportPayment` 는 아임포트의 결제 정보를 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.pay_method === \"card\")\n payment.card_number; // payment be IIamportCardPayment\n```" + }, + "IIamportTransferPayment": { + "type": "object", + "properties": { + "bank_code": { + "type": "string", + "title": "은행 식별자 코드", + "description": "은행 식별자 코드." }, - "pay_method": { - "x-typia-required": true, - "x-typia-optional": false, + "bank_name": { "type": "string", - "enum": [ - "vbank" - ] + "title": "은행 이름", + "description": "은행 이름." + }, + "pay_method": { + "const": "trans" }, "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "결제 정보 {@link IIamportPayment} 의 식별자 키", + "description": "결제 정보 {@link IIamportPayment} 의 식별자 키." }, "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 식별자 키", + "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다." }, "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ], + "title": "주문명, 누락 가능", + "description": "주문명, 누락 가능." }, "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 총액", + "description": "결제 총액." }, "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 취소, 환불 총액", + "description": "결제 취소, 환불 총액." }, "currency": { - "$ref": "#/components/schemas/IIamportPayment.Currency" + "$ref": "#/components/schemas/IIamportPayment.Currency", + "title": "통화 단위", + "description": "통화 단위." }, "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "format": "url" + "format": "uri", + "title": "영수증 URL", + "description": "영수증 URL." }, "cash_receipt_issue": { - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "boolean" + "type": "boolean", + "title": "현금 영수증 발행 여부", + "description": "현금 영수증 발행 여부." }, "channel": { - "x-typia-required": true, - "x-typia-optional": false, "type": "string" }, "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, "type": "string" }, "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, "type": "string" }, "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, "type": "string" }, "escrow": { - "x-typia-required": true, - "x-typia-optional": false, "type": "boolean" }, "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "format": "email" + } + ] }, "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "status": { - "$ref": "#/components/schemas/IIamportPayment.Status" + "$ref": "#/components/schemas/IIamportPayment.Status", + "title": "결제의 현재 (진행) 상태", + "description": "결제의 현재 (진행) 상태." }, "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 신청 일시", + "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임." }, "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 (지불) 완료 일시", + "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀." }, "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 실패 일시", + "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀." }, "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 취소 일시", + "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀." }, "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, "type": "array", "items": { "$ref": "#/components/schemas/IIamportPaymentCancel" } } }, - "nullable": false, "required": [ - "vbank_code", - "vbank_name", - "vbank_num", - "vbank_holder", - "vbank_date", - "vbank_issued_at", + "bank_code", + "bank_name", "pay_method", "imp_uid", "merchant_uid", @@ -3161,224 +2156,265 @@ "cancel_reason", "cancel_history" ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] + "description": "계좌 이체 결제 정보." }, - "IIamportPayment.IBase_lt__doublequote_phone_doublequote__space__or__space__doublequote_kpay_doublequote__space__or__space__doublequote_kakaopay_doublequote__space__or__space__doublequote_payco_doublequote__space__or__space__doublequote_lpay_doublequote__space__or__space__doublequote_ssgpay_doublequote__space__or__space__doublequote_tosspay_doublequote__space__or__space__doublequote_cultureland_doublequote__space__or__space__doublequote_smartculture_doublequote__space__or__space__doublequote_happymoney_doublequote__space__or__space__doublequote_booknlife_doublequote__space__or__space__doublequote_point_doublequote__gt_": { + "IIamportVBankPayment": { "type": "object", "properties": { - "pay_method": { - "x-typia-required": true, - "x-typia-optional": false, + "vbank_code": { "type": "string", - "enum": [ - "phone", - "kpay", - "kakaopay", - "payco", - "lpay", - "ssgpay", - "tosspay", - "cultureland", - "smartculture", - "happymoney", - "booknlife", - "point" - ] + "title": "가상 계좌 식별자 코드", + "description": "가상 계좌 식별자 코드." + }, + "vbank_name": { + "type": "string", + "description": "가상 게좌 이름" + }, + "vbank_num": { + "type": "string", + "description": "가상 계좌 번호" + }, + "vbank_holder": { + "type": "string", + "title": "가상 계좌 예금주", + "description": "가상 계좌 예금주." + }, + "vbank_date": { + "type": "number", + "title": "가상 계좌 입금 만료 기한", + "description": "가상 계좌 입금 만료 기한." + }, + "vbank_issued_at": { + "type": "number", + "title": "가상 계좌 개설 일시", + "description": "가상 계좌 개설 일시." + }, + "pay_method": { + "const": "vbank" }, "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "결제 정보 {@link IIamportPayment} 의 식별자 키", + "description": "결제 정보 {@link IIamportPayment} 의 식별자 키." }, "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 식별자 키", + "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다." }, "name": { - "description": "주문명, 누락 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ], + "title": "주문명, 누락 가능", + "description": "주문명, 누락 가능." }, "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 총액", + "description": "결제 총액." }, "cancel_amount": { - "description": "결제 취소, 환불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 취소, 환불 총액", + "description": "결제 취소, 환불 총액." }, "currency": { - "$ref": "#/components/schemas/IIamportPayment.Currency" + "$ref": "#/components/schemas/IIamportPayment.Currency", + "title": "통화 단위", + "description": "통화 단위." }, "receipt_url": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "format": "url" + "format": "uri", + "title": "영수증 URL", + "description": "영수증 URL." }, "cash_receipt_issue": { - "description": "현금 영수증 발행 여부.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "boolean" + "type": "boolean", + "title": "현금 영수증 발행 여부", + "description": "현금 영수증 발행 여부." }, "channel": { - "x-typia-required": true, - "x-typia-optional": false, "type": "string" }, "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, "type": "string" }, "emb_pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, "type": "string" }, "pg_tid": { - "x-typia-required": true, - "x-typia-optional": false, "type": "string" }, "escrow": { - "x-typia-required": true, - "x-typia-optional": false, "type": "boolean" }, "buyer_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "buyer_email": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "email", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "format": "email" + } + ] }, "buyer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "buyer_addr": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "buyer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "customer_uid": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "customer_uid_usage": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "custom_data": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "user_agent": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "status": { - "$ref": "#/components/schemas/IIamportPayment.Status" + "$ref": "#/components/schemas/IIamportPayment.Status", + "title": "결제의 현재 (진행) 상태", + "description": "결제의 현재 (진행) 상태." }, "started_at": { - "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 신청 일시", + "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임." }, "paid_at": { - "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 (지불) 완료 일시", + "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀." }, "failed_at": { - "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 실패 일시", + "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀." }, "cancelled_at": { - "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 취소 일시", + "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀." }, "fail_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "cancel_reason": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "cancel_history": { - "x-typia-required": true, - "x-typia-optional": false, "type": "array", "items": { "$ref": "#/components/schemas/IIamportPaymentCancel" } } }, - "nullable": false, "required": [ + "vbank_code", + "vbank_name", + "vbank_num", + "vbank_holder", + "vbank_date", + "vbank_issued_at", "pay_method", "imp_uid", "merchant_uid", @@ -3412,1116 +2448,737 @@ "cancel_reason", "cancel_history" ], - "description": "결제 기본 (공통) 정보.", - "x-typia-jsDocTags": [] + "description": "가상 계좌 결제 정보." }, - "IIamportPaymentCancel.IStore": { + "IIamportPayment.IBasephonekpaykakaopaypaycolpayssgpaytosspayculturelandsmartculturehappymoneybooknlifepoint": { "type": "object", "properties": { + "pay_method": { + "oneOf": [ + { + "const": "phone" + }, + { + "const": "kpay" + }, + { + "const": "kakaopay" + }, + { + "const": "payco" + }, + { + "const": "lpay" + }, + { + "const": "ssgpay" + }, + { + "const": "tosspay" + }, + { + "const": "cultureland" + }, + { + "const": "smartculture" + }, + { + "const": "happymoney" + }, + { + "const": "booknlife" + }, + { + "const": "point" + } + ] + }, "imp_uid": { - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "결제 정보 {@link IIamportPayment} 의 식별자 키", + "description": "결제 정보 {@link IIamportPayment} 의 식별자 키." }, "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 식별자 키", + "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다." }, - "amount": { - "description": "취소 금액, 부분 취소도 가능하다.\n\n누락시 전액 취소.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" + "name": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ], + "title": "주문명, 누락 가능", + "description": "주문명, 누락 가능." }, - "checksum": { - "description": "취소 트랜잭션 수행 전, 현재 시점의 취소 가능한 잔액.\n\nAPI요청자가 기록하고 있는 취소가능 잔액과 아임포트가 기록하고 있는 취소가능 잔액이\n일치하는지 사전에 검증하고, 검증에 실패하면 트랜잭션을 수행하지 않는다.\n\n`null` 인 경우에는 검증 프로세스를 생략.", - "x-typia-required": true, - "x-typia-optional": false, + "amount": { "type": "number", - "nullable": true - }, - "reason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "title": "결제 총액", + "description": "결제 총액." }, - "tax_free": { - "description": "취소요청금액 중 면세금액.", - "x-typia-jsDocTags": [ - { - "name": "default", - "text": [ - { - "text": "0", - "kind": "text" - } - ] - } - ], - "x-typia-required": false, - "x-typia-optional": true, + "cancel_amount": { "type": "number", - "default": 0 + "title": "결제 취소, 환불 총액", + "description": "결제 취소, 환불 총액." }, - "refund_holder": { - "description": "환불계좌 예금주.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "currency": { + "$ref": "#/components/schemas/IIamportPayment.Currency", + "title": "통화 단위", + "description": "통화 단위." }, - "refund_bank": { - "description": "환불계좌 은행 코드.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "receipt_url": { + "type": "string", + "format": "uri", + "title": "영수증 URL", + "description": "영수증 URL." }, - "refund_account": { - "description": "환불계좌 계좌번호.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "cash_receipt_issue": { + "type": "boolean", + "title": "현금 영수증 발행 여부", + "description": "현금 영수증 발행 여부." }, - "refund_tel": { - "description": "환불계좌 예금주 연락처", - "x-typia-required": false, - "x-typia-optional": true, + "channel": { "type": "string" - } - }, - "nullable": false, - "required": [ - "imp_uid", - "merchant_uid", - "checksum", - "reason" - ], - "description": "결제 취소 입력 정보.", - "x-typia-jsDocTags": [] - }, - "IIamportResponse_lt_IIamportReceipt_gt_": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, + "pg_provider": { "type": "string" }, - "response": { - "$ref": "#/components/schemas/IIamportReceipt" - } - }, - "nullable": false, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ + "emb_pg_provider": { + "oneOf": [ + { + "type": "null" + }, { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" + "type": "string" } ] - } - ] - }, - "IIamportReceipt": { - "type": "object", - "properties": { - "imp_uid": { - "description": "귀속 결제의 {@link IIamportPayment.imp_uid }.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" }, - "receipt_uid": { - "description": "현금 영수증의 고유 식별자 ID.", - "x-typia-required": true, - "x-typia-optional": false, + "pg_id": { "type": "string" }, - "apply_num": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, + "pg_tid": { "type": "string" }, - "type": { - "$ref": "#/components/schemas/IIamportReceipt.Type" - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "receipt_url": { - "description": "현금영수증 조회 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "url" - }, - "applied_at": { - "description": "현금영수증 발행 시간.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "escrow": { + "type": "boolean" }, - "cancelled_at": { - "description": "현금영수증 취소 시간.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - } - }, - "nullable": false, - "required": [ - "imp_uid", - "receipt_uid", - "apply_num", - "type", - "amount", - "vat", - "receipt_url", - "applied_at", - "cancelled_at" - ], - "description": "현금 영수증 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ + "buyer_name": { + "oneOf": [ + { + "type": "null" + }, { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" + "type": "string" } ] - } - ] - }, - "IIamportReceipt.Type": { - "description": "현금영수증 발행 타입 (대상).", - "type": "string", - "enum": [ - "person", - "company" - ] - }, - "IIamportReceipt.IStore": { - "type": "object", - "properties": { - "imp_uid": { - "description": "귀속 결제의 {@link IIamportPayment.imp_uid }.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" }, - "identifier": { - "description": "현금영수증 발생대상 식별정보.\n\n - 국세청현금영수증카드\n - 휴대폰번호\n - 주민등록번호\n - 사업자등록번호", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "buyer_email": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "format": "email" + } + ] }, - "identifier_type": { - "description": "현금영수증 발행대상 유형.\n\n - person: 주민등록번호\n - business: 사업자등록번호\n - phone: 휴대폰번호\n - taxcard: 국세청현금영수증카드\n\n일부 PG 사의 경우 이 항목이 없어 된다는데, 어지간하면 그냥 쓰기 바람.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "enum": [ - "phone", - "person", - "business", - "taxcard" + "buyer_tel": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } ] }, - "type": { - "description": "현금영수증 발행 타입 (대상).\n\n누락시 person 이 사용됨.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "enum": [ - "person", - "company" + "buyer_addr": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } ] }, - "buyer_name": { - "description": "구매자 이름.\n\n형금영수증 발행건 사후 추적을 위해 가급 입력하기 바람.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "buyer_postcode": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, - "buyer_email": { - "description": "구매자 이메일.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "customer_uid": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, - "buyer_tel": { - "description": "구매자 전화번호.\n\n현금영수증 발행건 사후 추적을 위해 가급 입력하기 바람.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "customer_uid_usage": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, - "tax_free": { - "description": "면세 금액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - } - }, - "nullable": false, - "required": [ - "imp_uid", - "identifier" - ], - "description": "현금영수증 입력 정보.", - "x-typia-jsDocTags": [] - }, - "IIamportUser.IAccessor": { - "type": "object", - "properties": { - "imp_key": { - "description": "API 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "custom_data": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, - "imp_secret": { - "description": "Secret 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": false, - "required": [ - "imp_key", - "imp_secret" - ], - "description": "아임포트에서 부여해 준 API 및 secret 키.", - "x-typia-jsDocTags": [] - }, - "IIamportResponse_lt_IIamportUser_gt_": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "user_agent": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "status": { + "$ref": "#/components/schemas/IIamportPayment.Status", + "title": "결제의 현재 (진행) 상태", + "description": "결제의 현재 (진행) 상태." }, - "response": { - "$ref": "#/components/schemas/IIamportUser" - } - }, - "nullable": false, - "required": [ - "code", - "message", - "response" - ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ + "started_at": { + "type": "number", + "title": "결제 신청 일시", + "description": "결제 신청 일시.\n\n리눅스 타임이 쓰임." + }, + "paid_at": { + "type": "number", + "title": "결제 (지불) 완료 일시", + "description": "결제 (지불) 완료 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀." + }, + "failed_at": { + "type": "number", + "title": "결제 실패 일시", + "description": "결제 실패 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀." + }, + "cancelled_at": { + "type": "number", + "title": "결제 취소 일시", + "description": "결제 취소 일시.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀." + }, + "fail_reason": { + "oneOf": [ + { + "type": "null" + }, { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" + "type": "string" } ] - } - ] - }, - "IIamportUser": { - "type": "object", - "properties": { - "now": { - "description": "토큰 발행 시간.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" }, - "expired_at": { - "description": "토큰 만료 시간.\n\n리눅스 타임이 기준이며, 이를 JS 에서 사용하려거든, 아래와 같이 변환해야 한다.\n\n```typescript\nnew Date(user.expired_at * 1_000);\n```", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "cancel_reason": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, - "access_token": { - "description": "유저 인증 토큰.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "cancel_history": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IIamportPaymentCancel" + } } }, - "nullable": false, "required": [ - "now", - "expired_at", - "access_token" + "pay_method", + "imp_uid", + "merchant_uid", + "name", + "amount", + "cancel_amount", + "currency", + "receipt_url", + "cash_receipt_issue", + "channel", + "pg_provider", + "emb_pg_provider", + "pg_id", + "pg_tid", + "escrow", + "buyer_name", + "buyer_email", + "buyer_tel", + "buyer_addr", + "buyer_postcode", + "customer_uid", + "customer_uid_usage", + "custom_data", + "user_agent", + "status", + "started_at", + "paid_at", + "failed_at", + "cancelled_at", + "fail_reason", + "cancel_reason", + "cancel_history" ], - "description": "아임포트 유저 인증 정보.\n\n아임포트는 고객사에게 API 및 secret 키 정보, {@link IIamportUser.IAccessor } 를 발급해준다.\n\n하지만 이를 곧장 아임포트의 유저 인증에 사용할 수는 없고, 해당 API 및 secret 키를 토대로 유저\n인증 토큰을 발급받아야 하는데, 이 유저 인증 토큰에는 하필이면 만로 시간이라는 게 존재한다.\n`IIamportUser` 는 바로 이러한 유저 인증 토큰 및 그것의 만료 시간을 형상화한 자료구조\n인터페이스이다.\n\n더하여 이처럼 만료 시간이 존재하는 아임포트의 유저 인증 토큰의 특성상, 이것의 만료 시간이\n초과되지 않도록 관리하는 것은 매우 힘든 일이다. 이에 `iamport-server-api` 에서는 아임포트\n유저 인증 토큰이 만료될 때마다 자동 갱신해주는, {@link IamportConnector } 클래스를 제공한다.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] + "description": "결제 기본 (공통) 정보." }, - "IIamportVBankPayment.IStore": { + "IIamportPaymentCancel.ICreate": { "type": "object", "properties": { + "imp_uid": { + "type": "string", + "title": "결제 정보 {@link IIamportPayment} 의 식별자 키", + "description": "결제 정보 {@link IIamportPayment} 의 식별자 키." + }, "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 식별자 키", + "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다." }, "amount": { - "description": "총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vbank_code": { - "description": "가상계좌 은행 코드.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "vbank_due": { - "description": "가상계좌 입금기한, 유닉스 타임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "vbank_holder": { - "description": "예금주.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "name": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_name": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_email": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "type": "number", + "title": "취소 금액, 부분 취소도 가능하다", + "description": "취소 금액, 부분 취소도 가능하다.\n\n누락시 전액 취소." }, - "buyer_tel": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "checksum": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "number", + "minimum": 0 + } + ], + "title": "취소 트랜잭션 수행 전, 현재 시점의 취소 가능한 잔액", + "description": "취소 트랜잭션 수행 전, 현재 시점의 취소 가능한 잔액.\n\nAPI요청자가 기록하고 있는 취소가능 잔액과 아임포트가 기록하고 있는 취소가능 잔액이\n일치하는지 사전에 검증하고, 검증에 실패하면 트랜잭션을 수행하지 않는다.\n\n`null` 인 경우에는 검증 프로세스를 생략." }, - "buyer_addr": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "reason": { + "type": "string", + "title": "취소 사유", + "description": "취소 사유." }, - "buyer_postcode": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "tax_free": { + "type": "number", + "title": "취소요청금액 중 면세금액", + "description": "취소요청금액 중 면세금액." }, - "pg": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "refund_holder": { + "type": "string", + "title": "환불계좌 예금주", + "description": "환불계좌 예금주." }, - "notice_url": { - "description": "가상 계좌 입금 정보를 수신할 URL.\n\n누락시 기본 웹훅 URL 사용.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "refund_bank": { + "type": "string", + "title": "환불계좌 은행 코드", + "description": "환불계좌 은행 코드." }, - "custom_data": { - "description": "커스텀 데이터, 자유롭게 사용 가능.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "refund_account": { + "type": "string", + "title": "환불계좌 계좌번호", + "description": "환불계좌 계좌번호." }, - "pg_api_key": { - "description": "[이니시스 전용] 가맹점 콘솔에서 확인한 API 값.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "refund_tel": { + "type": "string", + "description": "환불계좌 예금주 연락처" } }, - "nullable": false, "required": [ + "imp_uid", "merchant_uid", - "amount", - "vbank_code", - "vbank_due", - "vbank_holder" + "checksum", + "reason" ], - "description": "가상 계좌 결제 입력 정보.\n\n가상 계좌를 임의 생성할 수 있다.\n\n단, 일부 PG 사 혹은 `fake-iamport-server` 만 가능.\n\n - 세틀뱅크\n - 나이스페이먼츠\n - KG이니시스", - "x-typia-jsDocTags": [] + "description": "결제 취소 입력 정보." }, - "IIamportResponse_lt_IIamportVBankPayment_gt_": { + "IIamportResponseIIamportReceipt": { "type": "object", "properties": { "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "에러 코드", + "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻." }, "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "성공 또는 오류 메시지", + "description": "성공 또는 오류 메시지." }, "response": { - "$ref": "#/components/schemas/IIamportVBankPayment" + "$ref": "#/components/schemas/IIamportReceipt", + "title": "응답 데이터, 사실상 본문", + "description": "응답 데이터, 사실상 본문." } }, - "nullable": false, "required": [ "code", "message", "response" ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] + "description": "아임포트 고유의 응답 데이터." }, - "IIamportVBankPayment.IUpdate": { + "IIamportReceipt": { "type": "object", "properties": { "imp_uid": { - "description": "대상 결제 기록의 {@link IIamportPayment.imp_uid }.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "귀속 결제의 {@link IIamportPayment.imp_uid}", + "description": "귀속 결제의 {@link IIamportPayment.imp_uid}." + }, + "receipt_uid": { + "type": "string", + "title": "현금 영수증의 고유 식별자 ID", + "description": "현금 영수증의 고유 식별자 ID." + }, + "apply_num": { + "type": "string", + "title": "승인 번호", + "description": "승인 번호." + }, + "type": { + "$ref": "#/components/schemas/IIamportReceipt.Type", + "title": "발행 타입 (대상)", + "description": "발행 타입 (대상)." }, "amount": { - "description": "수정할 결제 금액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" + "type": "number", + "title": "결제 총액", + "description": "결제 총액." }, - "vbank_due": { - "description": "수정할 가상계좌 입금 기한.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - } - }, - "nullable": false, - "required": [ - "imp_uid" - ], - "description": "가상 계좌 결제의 수정 입력 정보.\n\n아직 입금되지 않은 가상계좌의 입금기한 또는 입금금액을 수정할 수 있다.\n\n다만, 세틀뱅크 혹은 `fake-iamport-server` 만 가능.", - "x-typia-jsDocTags": [] - }, - "IIamportResponse_lt_IIamportSubscription_gt_": { - "type": "object", - "properties": { - "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "vat": { + "type": "number", + "title": "부가세", + "description": "부가세." }, - "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "receipt_url": { + "type": "string", + "format": "uri", + "title": "현금영수증 조회 URL", + "description": "현금영수증 조회 URL." }, - "response": { - "$ref": "#/components/schemas/IIamportSubscription" + "applied_at": { + "type": "number", + "title": "현금영수증 발행 시간", + "description": "현금영수증 발행 시간." + }, + "cancelled_at": { + "type": "number", + "title": "현금영수증 취소 시간", + "description": "현금영수증 취소 시간.\n\n리눅스 타임이 쓰이며, `null` 대신 0 을 씀." } }, - "nullable": false, "required": [ - "code", - "message", - "response" + "imp_uid", + "receipt_uid", + "apply_num", + "type", + "amount", + "vat", + "receipt_url", + "applied_at", + "cancelled_at" ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ + "description": "현금 영수증 정보." + }, + "IIamportReceipt.Type": { + "oneOf": [ { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] + "const": "person" + }, + { + "const": "company" } - ] + ], + "description": "현금영수증 발행 타입 (대상)." }, - "IIamportSubscription": { + "IIamportReceipt.ICreate": { "type": "object", "properties": { - "pg_provider": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "pg_id": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_name": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_code": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_number": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "card_type": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "imp_uid": { + "type": "string", + "title": "귀속 결제의 {@link IIamportPayment.imp_uid}", + "description": "귀속 결제의 {@link IIamportPayment.imp_uid}." }, - "customer_name": { - "x-typia-required": true, - "x-typia-optional": false, + "identifier": { "type": "string", - "nullable": true + "title": "현금영수증 발생대상 식별정보", + "description": "현금영수증 발생대상 식별정보.\n\n - 국세청현금영수증카드\n - 휴대폰번호\n - 주민등록번호\n - 사업자등록번호" + }, + "identifier_type": { + "oneOf": [ + { + "const": "phone" + }, + { + "const": "person" + }, + { + "const": "business" + }, + { + "const": "taxcard" + } + ], + "title": "현금영수증 발행대상 유형", + "description": "현금영수증 발행대상 유형.\n\n - person: 주민등록번호\n - business: 사업자등록번호\n - phone: 휴대폰번호\n - taxcard: 국세청현금영수증카드\n\n일부 PG 사의 경우 이 항목이 없어 된다는데, 어지간하면 그냥 쓰기 바람." }, - "customer_tel": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "nullable": true + "type": { + "oneOf": [ + { + "const": "person" + }, + { + "const": "company" + } + ], + "title": "현금영수증 발행 타입 (대상)", + "description": "현금영수증 발행 타입 (대상).\n\n누락시 person 이 사용됨." }, - "customer_email": { - "x-typia-required": true, - "x-typia-optional": false, + "buyer_name": { "type": "string", - "nullable": true + "title": "구매자 이름", + "description": "구매자 이름.\n\n형금영수증 발행건 사후 추적을 위해 가급 입력하기 바람." }, - "customer_addr": { - "x-typia-required": true, - "x-typia-optional": false, + "buyer_email": { "type": "string", - "nullable": true + "title": "구매자 이메일", + "description": "구매자 이메일." }, - "customer_postcode": { - "x-typia-required": true, - "x-typia-optional": false, + "buyer_tel": { "type": "string", - "nullable": true - }, - "inserted": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "updated": { - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "title": "구매자 전화번호", + "description": "구매자 전화번호.\n\n현금영수증 발행건 사후 추적을 위해 가급 입력하기 바람." }, - "customer_uid": { - "description": "고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "tax_free": { + "type": "number", + "title": "면세 금액", + "description": "면세 금액." } }, - "nullable": false, "required": [ - "pg_provider", - "pg_id", - "card_name", - "card_code", - "card_number", - "card_type", - "customer_name", - "customer_tel", - "customer_email", - "customer_addr", - "customer_postcode", - "inserted", - "updated", - "customer_uid" + "imp_uid", + "identifier" ], - "description": "간편 결제 카드 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] + "description": "현금영수증 입력 정보." }, - "IIamportSubscription.IStore": { + "IIamportUser.IAccessor": { "type": "object", "properties": { - "card_number": { - "description": "카드 번호.\n\n형식: XXXX-XXXX-XXXX-XXXX", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "\\d{4}-\\d{4}-\\d{4}-\\d{4}" - }, - "expiry": { - "description": "카드 유효기간.\n\n형식: YYYY-MM", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^([0-9]{4})-(0[1-9]|1[012])$" - }, - "birth": { - "description": "생년월일 YYMMDD 또는 사업자등록번호 10자리.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^(([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01]))|(\\d{10})$" - }, - "pwd_2digit": { - "description": "카드 비밀번호 앞 두 자리.", - "x-typia-required": false, - "x-typia-optional": true, + "imp_key": { "type": "string", - "pattern": "\\d{2}" + "title": "API 키", + "description": "API 키." }, - "cvc": { - "description": "카드 인증번호 (카드 뒷면 3 자리).", - "x-typia-required": false, - "x-typia-optional": true, + "imp_secret": { "type": "string", - "pattern": "\\d{2}" - }, - "customer_name": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customer_tel": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "title": "Secret 키", + "description": "Secret 키." + } + }, + "required": [ + "imp_key", + "imp_secret" + ], + "description": "아임포트에서 부여해 준 API 및 secret 키." + }, + "IIamportResponseIIamportUser": { + "type": "object", + "properties": { + "code": { + "type": "number", + "title": "에러 코드", + "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻." }, - "customer_email": { - "x-typia-required": false, - "x-typia-optional": true, + "message": { "type": "string", - "format": "email" - }, - "customr_addr": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "title": "성공 또는 오류 메시지", + "description": "성공 또는 오류 메시지." }, - "customer_postcode": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customer_uid": { - "description": "고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "response": { + "$ref": "#/components/schemas/IIamportUser", + "title": "응답 데이터, 사실상 본문", + "description": "응답 데이터, 사실상 본문." } }, - "nullable": false, "required": [ - "card_number", - "expiry", - "birth", - "customer_uid" + "code", + "message", + "response" ], - "description": "간편 결제 카드 입력 정보.", - "x-typia-jsDocTags": [] + "description": "아임포트 고유의 응답 데이터." }, - "IIamportSubscription.IOnetime": { + "IIamportUser": { "type": "object", "properties": { - "customer_uid": { - "description": "고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함.\n\n이를 생략시 단순 결제로만 그치며, 카드 정보가 간편 결제용으로 등록되지 아니함.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "now": { + "type": "number", + "title": "토큰 발행 시간", + "description": "토큰 발행 시간." }, - "card_number": { - "description": "카드 번호.\n\n형식: XXXX-XXXX-XXXX-XXXX", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "\\d{4}-\\d{4}-\\d{4}-\\d{4}" + "expired_at": { + "type": "number", + "title": "토큰 만료 시간", + "description": "토큰 만료 시간.\n\n리눅스 타임이 기준이며, 이를 JS 에서 사용하려거든, 아래와 같이 변환해야 한다.\n\n```typescript\nnew Date(user.expired_at * 1_000);\n```" }, - "expiry": { - "description": "카드 유효기간.\n\n형식: YYYY-MM", - "x-typia-required": true, - "x-typia-optional": false, + "access_token": { "type": "string", - "pattern": "^([0-9]{4})-(0[1-9]|1[012])$" - }, - "birth": { - "description": "생년월일 YYMMDD 또는 사업자등록번호 10자리.", - "x-typia-required": true, - "x-typia-optional": false, + "title": "유저 인증 토큰", + "description": "유저 인증 토큰." + } + }, + "required": [ + "now", + "expired_at", + "access_token" + ], + "description": "아임포트 유저 인증 정보.\n\n아임포트는 고객사에게 API 및 secret 키 정보, {@link IIamportUser.IAccessor} 를 발급해준다.\n\n하지만 이를 곧장 아임포트의 유저 인증에 사용할 수는 없고, 해당 API 및 secret 키를 토대로 유저\n인증 토큰을 발급받아야 하는데, 이 유저 인증 토큰에는 하필이면 만로 시간이라는 게 존재한다.\n`IIamportUser` 는 바로 이러한 유저 인증 토큰 및 그것의 만료 시간을 형상화한 자료구조\n인터페이스이다.\n\n더하여 이처럼 만료 시간이 존재하는 아임포트의 유저 인증 토큰의 특성상, 이것의 만료 시간이\n초과되지 않도록 관리하는 것은 매우 힘든 일이다. 이에 `iamport-server-api` 에서는 아임포트\n유저 인증 토큰이 만료될 때마다 자동 갱신해주는, {@link IamportConnector} 클래스를 제공한다." + }, + "IIamportVBankPayment.ICreate": { + "type": "object", + "properties": { + "merchant_uid": { "type": "string", - "pattern": "^(([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01]))|(\\d{10})$" + "title": "주문 식별자 키", + "description": "주문 식별자 키.\n\n아임포트 서버가 아닌, 이를 사용하는 서비스가 자체적으로 발급하고 관리한다." }, - "pwd_2digit": { - "description": "카드 비밀번호 앞 두 자리.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "pattern": "\\d{2}" + "amount": { + "type": "number", + "title": "총액", + "description": "총액." }, - "cvc": { - "description": "카드 인증번호 (카드 뒷면 3 자리).", - "x-typia-required": false, - "x-typia-optional": true, + "vbank_code": { "type": "string", - "pattern": "\\d{2}" + "title": "가상계좌 은행 코드", + "description": "가상계좌 은행 코드." }, - "customer_name": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customer_tel": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "vbank_due": { + "type": "number", + "title": "가상계좌 입금기한, 유닉스 타임", + "description": "가상계좌 입금기한, 유닉스 타임." }, - "customer_email": { - "x-typia-required": false, - "x-typia-optional": true, + "vbank_holder": { "type": "string", - "format": "email" - }, - "customr_addr": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "customer_postcode": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트가 아닌 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "title": "예금주", + "description": "예금주." }, "name": { - "description": "주문 이름.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string" }, - "currency": { - "description": "통화 정보.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "tax_free": { - "description": "면세 공급가액.\n\n기본값은 0 로써, 알아서 amount 의 1/11 로써 부가세 처리됨.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "card_quota": { - "description": "할부 개월 수.\n\n일시불은 0.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, "buyer_name": { - "x-typia-required": false, - "x-typia-optional": true, "type": "string" }, "buyer_email": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "format": "email" + "type": "string" }, "buyer_tel": { - "x-typia-required": false, - "x-typia-optional": true, "type": "string" }, "buyer_addr": { - "x-typia-required": false, - "x-typia-optional": true, "type": "string" }, "buyer_postcode": { - "x-typia-required": false, - "x-typia-optional": true, "type": "string" }, - "interest_free_by_merchant": { - "description": "카드할부처리할 때, 할부이자가 발생하는 경우 (카드사 무이자 프로모션 제외).\n\n부과되는 할부이자를 고객대신 가맹점이 지불하고자 PG사와 계약된 경우(현재, 나이스페이먼츠만 지원됨)", - "x-typia-required": false, - "x-typia-optional": true, - "type": "boolean" + "pg": { + "type": "string" }, - "use_card_point": { - "description": "승인요청시 카드사 포인트 차감하며 결제승인처리할지 flag.\n\nPG사 영업담당자와 계약 당시 사전 협의 필요(현재, 나이스페이먼츠만 지원됨)", - "x-typia-required": false, - "x-typia-optional": true, - "type": "boolean" + "notice_url": { + "type": "string", + "title": "가상 계좌 입금 정보를 수신할 URL", + "description": "가상 계좌 입금 정보를 수신할 URL.\n\n누락시 기본 웹훅 URL 사용." }, "custom_data": { - "description": "임의 정보를 기재할 수 있다.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "type": "string", + "title": "커스텀 데이터, 자유롭게 사용 가능", + "description": "커스텀 데이터, 자유롭게 사용 가능." }, - "notice_url": { - "description": "결제 성공시 통지될 Notification, 웹훅 URL.", - "x-typia-required": false, - "x-typia-optional": true, + "pg_api_key": { "type": "string", - "format": "url" + "title": "[이니시스 전용] 가맹점 콘솔에서 확인한 API 값", + "description": "[이니시스 전용] 가맹점 콘솔에서 확인한 API 값." } }, - "nullable": false, "required": [ - "card_number", - "expiry", - "birth", "merchant_uid", "amount", - "name" + "vbank_code", + "vbank_due", + "vbank_holder" ], - "description": "결제 신청 입력 정보.", - "x-typia-jsDocTags": [] + "description": "가상 계좌 결제 입력 정보.\n\n가상 계좌를 임의 생성할 수 있다.\n\n단, 일부 PG 사 혹은 `fake-iamport-server` 만 가능.\n\n - 세틀뱅크\n - 나이스페이먼츠\n - KG이니시스" }, - "IIamportResponse_lt_IIamportCardPayment_gt_": { + "IIamportResponseIIamportVBankPayment": { "type": "object", "properties": { "code": { - "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "에러 코드", + "description": "에러 코드.\n\n값이 0 이면 오류가 없다는 뜻." }, "message": { - "description": "성공 또는 오류 메시지.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "성공 또는 오류 메시지", + "description": "성공 또는 오류 메시지." }, "response": { - "$ref": "#/components/schemas/IIamportCardPayment" + "$ref": "#/components/schemas/IIamportVBankPayment", + "title": "응답 데이터, 사실상 본문", + "description": "응답 데이터, 사실상 본문." } }, - "nullable": false, "required": [ "code", "message", "response" ], - "description": "아임포트 고유의 응답 데이터.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] + "description": "아임포트 고유의 응답 데이터." }, - "IIamportSubscription.IAgain": { + "IIamportVBankPayment.IUpdate": { "type": "object", "properties": { - "merchant_uid": { - "description": "주문 식별자 키.\n\n아임포트가 아닌 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" - }, - "name": { - "description": "주문 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "currency": { - "description": "통화 정보.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "enum": [ - "KRW", - "USD", - "EUR", - "JPY" - ] - }, - "tax_free": { - "description": "면세 공급가액.\n\n기본값은 0 로써, 알아서 amount 의 1/11 로써 부가세 처리됨.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "card_quota": { - "description": "할부 개월 수.\n\n일시불은 0.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" - }, - "buyer_name": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_email": { - "x-typia-required": false, - "x-typia-optional": true, + "imp_uid": { "type": "string", - "format": "email" + "title": "대상 결제 기록의 {@link IIamportPayment.imp_uid}", + "description": "대상 결제 기록의 {@link IIamportPayment.imp_uid}." }, - "buyer_tel": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_addr": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "buyer_postcode": { - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "interest_free_by_merchant": { - "description": "카드할부처리할 때, 할부이자가 발생하는 경우 (카드사 무이자 프로모션 제외).\n\n부과되는 할부이자를 고객대신 가맹점이 지불하고자 PG사와 계약된 경우(현재, 나이스페이먼츠만 지원됨)", - "x-typia-required": false, - "x-typia-optional": true, - "type": "boolean" - }, - "use_card_point": { - "description": "승인요청시 카드사 포인트 차감하며 결제승인처리할지 flag.\n\nPG사 영업담당자와 계약 당시 사전 협의 필요(현재, 나이스페이먼츠만 지원됨)", - "x-typia-required": false, - "x-typia-optional": true, - "type": "boolean" - }, - "custom_data": { - "description": "임의 정보를 기재할 수 있다.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" - }, - "notice_url": { - "description": "결제 성공시 통지될 Notification, 웹훅 URL.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string", - "format": "url" + "amount": { + "type": "number", + "title": "수정할 결제 금액", + "description": "수정할 결제 금액." }, - "customer_uid": { - "description": "고객 식별자 키.\n\n아임포트가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.\n\n다만 고객이라기보다 실제로는 카드의 식별자 키로 써야함.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "vbank_due": { + "type": "number", + "title": "수정할 가상계좌 입금 기한", + "description": "수정할 가상계좌 입금 기한." } }, - "nullable": false, "required": [ - "merchant_uid", - "amount", - "name", - "customer_uid" + "imp_uid" ], - "description": "간편 결제 카드로 결제 신청 입력 정보.", - "x-typia-jsDocTags": [] + "description": "가상 계좌 결제의 수정 입력 정보.\n\n아직 입금되지 않은 가상계좌의 입금기한 또는 입금금액을 수정할 수 있다.\n\n다만, 세틀뱅크 혹은 `fake-iamport-server` 만 가능." } }, "securitySchemes": { @@ -4531,5 +3188,7 @@ "in": "header" } } - } + }, + "tags": [], + "x-samchon-emended": true } \ No newline at end of file diff --git a/examples/swagger/shopping.json b/examples/swagger/shopping.json index c814d21..59ffce4 100644 --- a/examples/swagger/shopping.json +++ b/examples/swagger/shopping.json @@ -7,7 +7,7 @@ } ], "info": { - "version": "0.4.0", + "version": "0.4.3", "title": "@samchon/shopping-backend", "description": "Backend for shopping", "license": { @@ -157,7 +157,7 @@ } }, "summary": "Login as an administrator", - "description": "Login as an administrator.\n\nLogin as an administrator with {@link IShoppingAdministrator.ILogin login info}.\n\nThis method has exactly same effect with\n{@link ShoppingApi.functional.customers.authenticate.login } function, but\nreturned type is a llttle different. The similar function returns\n{@link IShoppingCustomer } type that starting from the customer information, so\nthat you have to access to the administrator info through\n`customer.member.administrator`. In contrast with that, this method returns\n{@link IShoppingAdministrator.IInvert } type that starting from the administrator\ninfo, so that can access to the customer info through `administrator.customer`.\n\nOf course, to use this function, you had to {@link join } as an administrator\nbefore. If not, 403 forbidden exception would be thrown," + "description": "Login as an administrator.\n\nLogin as an administrator with {@link IShoppingAdministrator.ILogin login info}.\n\nThis method has exactly same effect with\n{@link ShoppingApi.functional.customers.authenticate.login} function, but\nreturned type is a llttle different. The similar function returns\n{@link IShoppingCustomer} type that starting from the customer information, so\nthat you have to access to the administrator info through\n`customer.member.administrator`. In contrast with that, this method returns\n{@link IShoppingAdministrator.IInvert} type that starting from the administrator\ninfo, so that can access to the customer info through `administrator.customer`.\n\nOf course, to use this function, you had to {@link join} as an administrator\nbefore. If not, 403 forbidden exception would be thrown," } }, "/shoppings/admins/coupons": { @@ -190,7 +190,7 @@ } }, "summary": "Create a new coupon", - "description": "Create a new coupon.\n\nCreate a new {@link IShoppingCoupon coupon} with given information.\n\nBy the way, if you are a {@link IShoppingSeller seller}, you have to\nadd include direction's {@link IShoppingCouponSellerCriteria } or\n{@link IShoppingCouponSaleCriteria } condition. This is because only\n{@link IShoppingAdministrator administrators} can create a coupon\nwhich can be used throughout the market. Seller must limit the usage\nrange by his/her {@link IShoppingSale sale(s)}.\n\nOf course, when adminstrator is planning to make a general coupon\nthat can be used throughout the market, the administrator must\nget agree from the sellers who are going to be affected." + "description": "Create a new coupon.\n\nCreate a new {@link IShoppingCoupon coupon} with given information.\n\nBy the way, if you are a {@link IShoppingSeller seller}, you have to\nadd include direction's {@link IShoppingCouponSellerCriteria} or\n{@link IShoppingCouponSaleCriteria} condition. This is because only\n{@link IShoppingAdministrator administrators} can create a coupon\nwhich can be used throughout the market. Seller must limit the usage\nrange by his/her {@link IShoppingSale sale(s)}.\n\nOf course, when adminstrator is planning to make a general coupon\nthat can be used throughout the market, the administrator must\nget agree from the sellers who are going to be affected." }, "patch": { "tags": [ @@ -236,8 +236,8 @@ "schema": { "type": "string" }, - "description": "Target coupon's ", - "required": true + "required": true, + "description": " Target coupon's {@link IShoppingCoupon.id}" } ], "responses": { @@ -259,8 +259,8 @@ "schema": { "type": "string" }, - "description": "Target coupon's ", - "required": true + "required": true, + "description": " Target coupon's {@link IShoppingCoupon.id}" } ], "responses": { @@ -356,8 +356,8 @@ "type": "string", "format": "uuid" }, - "description": "Target deposit's ", - "required": true + "required": true, + "description": " Target deposit's {@link IShoppingDeposit.id}" } ], "responses": { @@ -387,8 +387,8 @@ "type": "string", "format": "uuid" }, - "description": "Target deposit's ", - "required": true + "required": true, + "description": " Target deposit's {@link IShoppingDeposit.id}" } ], "responses": { @@ -412,7 +412,6 @@ "schema": { "type": "string" }, - "description": "", "required": true } ], @@ -509,8 +508,8 @@ "type": "string", "format": "uuid" }, - "description": "Target mileage's ", - "required": true + "required": true, + "description": " Target mileage's {@link IShoppingMileage.id}" } ], "responses": { @@ -540,8 +539,8 @@ "type": "string", "format": "uuid" }, - "description": "Target mileage's ", - "required": true + "required": true, + "description": " Target mileage's {@link IShoppingMileage.id}" } ], "responses": { @@ -565,7 +564,6 @@ "schema": { "type": "string" }, - "description": "", "required": true } ], @@ -662,8 +660,8 @@ "type": "string", "format": "uuid" }, - "description": "Target history's ", - "required": true + "required": true, + "description": " Target history's {@link IShoppingMileageDonation.id}" } ], "responses": { @@ -728,8 +726,8 @@ "type": "string", "format": "uuid" }, - "description": "Target order's ", - "required": true + "required": true, + "description": " Target order's {@link IShoppingOrder.id}" } ], "responses": { @@ -778,7 +776,7 @@ } }, "summary": "List up every summarized sales", - "description": "List up every summarized sales.\n\nList up every {@link IShoppingSale.ISummary summarized sales}.\n\nAs you can see, returned sales are summarized, not detailed. If you want\nto get the detailed information of a sale, use {@link at } function for\neach sale.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}s. Otherwise you're a\n{@link IShoppingCustomer customer}, you can see only the operating\nsales in the market. You can't see the unopened, closed, or suspended\nsales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSale.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingSale.IRequest.sort sort condition}." + "description": "List up every summarized sales.\n\nList up every {@link IShoppingSale.ISummary summarized sales}.\n\nAs you can see, returned sales are summarized, not detailed. If you want\nto get the detailed information of a sale, use {@link at} function for\neach sale.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}s. Otherwise you're a\n{@link IShoppingCustomer customer}, you can see only the operating\nsales in the market. You can't see the unopened, closed, or suspended\nsales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSale.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingSale.IRequest.sort sort condition}." } }, "/shoppings/admins/sales/{id}": { @@ -794,8 +792,8 @@ "type": "string", "format": "uuid" }, - "description": "Target sale's ", - "required": true + "required": true, + "description": " Target sale's {@link IShoppingSale.id}" } ], "responses": { @@ -827,8 +825,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -837,8 +835,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged inquiry's ", - "required": true + "required": true, + "description": " Belonged inquiry's {@link IShoppingSaleInquiry.id }" } ], "requestBody": { @@ -879,8 +877,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -889,8 +887,8 @@ "type": "string", "format": "uuid" }, - "description": "Target inquiry's ", - "required": true + "required": true, + "description": " Target inquiry's {@link IShoppingSaleInquiry.id }" } ], "requestBody": { @@ -933,8 +931,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -943,8 +941,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged inquiry's ", - "required": true + "required": true, + "description": " Belonged inquiry's {@link IShoppingSaleInquiry.id }" }, { "name": "id", @@ -953,8 +951,8 @@ "type": "string", "format": "uuid" }, - "description": "Target inquiry comment's ", - "required": true + "required": true, + "description": " Target inquiry comment's {@link IShoppingSaleInquiryComment.id}" } ], "responses": { @@ -984,8 +982,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -994,8 +992,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged inquiry's ", - "required": true + "required": true, + "description": " Belonged inquiry's {@link IShoppingSaleInquiry.id }" }, { "name": "id", @@ -1004,8 +1002,8 @@ "type": "string", "format": "uuid" }, - "description": "Target inquiry comment's ", - "required": true + "required": true, + "description": " Target inquiry comment's {@link IShoppingSaleInquiryComment.id}" } ], "requestBody": { @@ -1048,8 +1046,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" } ], "requestBody": { @@ -1076,7 +1074,7 @@ } }, "summary": "List up every summarized questions", - "description": "List up every summarized questions.\n\nList up every {@link IShoppingSaleQuestion.ISummary summarized questions} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned questions are summarized, not detailed. If you want\nto get the detailed information of a question, use {@link adridges } function\nor {@link at } function for each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.ISummary.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.ISummary.secret } with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." + "description": "List up every summarized questions.\n\nList up every {@link IShoppingSaleQuestion.ISummary summarized questions} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned questions are summarized, not detailed. If you want\nto get the detailed information of a question, use {@link adridges} function\nor {@link at} function for each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.ISummary.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.ISummary.secret} with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." } }, "/shoppings/admins/sales/{saleId}/questions/abridges": { @@ -1092,8 +1090,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" } ], "requestBody": { @@ -1120,7 +1118,7 @@ } }, "summary": "List up every abridged questions", - "description": "List up every abridged questions.\n\nList up every {@link IShoppingSaleQuestion.IAbridge abridged questions} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned questions are abridged, not detailed. If you want\nto get the detailed information of a question, use {@link at } function\nfor each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.IAridge.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.IAridge.secret } with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." + "description": "List up every abridged questions.\n\nList up every {@link IShoppingSaleQuestion.IAbridge abridged questions} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned questions are abridged, not detailed. If you want\nto get the detailed information of a question, use {@link at} function\nfor each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.IAridge.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.IAridge.secret} with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." } }, "/shoppings/admins/sales/{saleId}/questions/{id}": { @@ -1136,8 +1134,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "id", @@ -1146,8 +1144,8 @@ "type": "string", "format": "uuid" }, - "description": "Target question's ", - "required": true + "required": true, + "description": " Target question's {@link IShoppingSaleQuestion.id}" } ], "responses": { @@ -1163,7 +1161,7 @@ } }, "summary": "Get a question info", - "description": "Get a question info.\n\nGet a detailed {@link IShoppingSaleQuestion question} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s question. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nquestions of the sales except the {@link IShoppingSaleQuestion.secret }\nvalue is `false`." + "description": "Get a question info.\n\nGet a detailed {@link IShoppingSaleQuestion question} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s question. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nquestions of the sales except the {@link IShoppingSaleQuestion.secret}\nvalue is `false`." } }, "/shoppings/admins/sales/{saleId}/reviews/{inquiryId}/comments": { @@ -1179,8 +1177,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -1189,8 +1187,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged inquiry's ", - "required": true + "required": true, + "description": " Belonged inquiry's {@link IShoppingSaleInquiry.id }" } ], "requestBody": { @@ -1231,8 +1229,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -1241,8 +1239,8 @@ "type": "string", "format": "uuid" }, - "description": "Target inquiry's ", - "required": true + "required": true, + "description": " Target inquiry's {@link IShoppingSaleInquiry.id }" } ], "requestBody": { @@ -1285,8 +1283,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -1295,8 +1293,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged inquiry's ", - "required": true + "required": true, + "description": " Belonged inquiry's {@link IShoppingSaleInquiry.id }" }, { "name": "id", @@ -1305,8 +1303,8 @@ "type": "string", "format": "uuid" }, - "description": "Target inquiry comment's ", - "required": true + "required": true, + "description": " Target inquiry comment's {@link IShoppingSaleInquiryComment.id}" } ], "responses": { @@ -1336,8 +1334,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -1346,8 +1344,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged inquiry's ", - "required": true + "required": true, + "description": " Belonged inquiry's {@link IShoppingSaleInquiry.id }" }, { "name": "id", @@ -1356,8 +1354,8 @@ "type": "string", "format": "uuid" }, - "description": "Target inquiry comment's ", - "required": true + "required": true, + "description": " Target inquiry comment's {@link IShoppingSaleInquiryComment.id}" } ], "requestBody": { @@ -1400,8 +1398,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" } ], "requestBody": { @@ -1428,7 +1426,7 @@ } }, "summary": "List up every summarized reviews", - "description": "List up every summarized reviews.\n\nList up every {@link IShoppingSaleReview.ISummary summarized reviews} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned reviews are summarized, not detailed. If you want\nto get the detailed information of a review, use {@link adridges } function\nor {@link at } function for each article.\n\nAlso, returned review has {@link IShoppingSaleReview.ISummary.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." + "description": "List up every summarized reviews.\n\nList up every {@link IShoppingSaleReview.ISummary summarized reviews} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned reviews are summarized, not detailed. If you want\nto get the detailed information of a review, use {@link adridges} function\nor {@link at} function for each article.\n\nAlso, returned review has {@link IShoppingSaleReview.ISummary.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." } }, "/shoppings/admins/sales/{saleId}/reviews/abridges": { @@ -1444,8 +1442,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" } ], "requestBody": { @@ -1472,7 +1470,7 @@ } }, "summary": "List up every abridged reviews", - "description": "List up every abridged reviews.\n\nList up every {@link IShoppingSaleReview.IAbridge abridged reviews} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned reviews are abridged, not detailed. If you want\nto get the detailed information of a review, use {@link at } function\nfor each article.\n\nAlso, returned review has {@link IShoppingSaleReview.IAridge.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." + "description": "List up every abridged reviews.\n\nList up every {@link IShoppingSaleReview.IAbridge abridged reviews} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned reviews are abridged, not detailed. If you want\nto get the detailed information of a review, use {@link at} function\nfor each article.\n\nAlso, returned review has {@link IShoppingSaleReview.IAridge.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." } }, "/shoppings/admins/sales/{saleId}/reviews/{id}": { @@ -1488,8 +1486,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "id", @@ -1498,8 +1496,8 @@ "type": "string", "format": "uuid" }, - "description": "Target review's ", - "required": true + "required": true, + "description": " Target review's {@link IShoppingSaleReview.id}" } ], "responses": { @@ -1531,8 +1529,8 @@ "type": "string", "format": "uuid" }, - "description": "Target sale's ", - "required": true + "required": true, + "description": " Target sale's {@link IShoppingSale.id}" } ], "requestBody": { @@ -1559,7 +1557,7 @@ } }, "summary": "List up every snapshots", - "description": "List up every snapshots.\n\nWhenever {@link IShoppingSeller seller} updates a\n{@link IShoppingSale sale}, the sale record is not updated but a new\n{@link IShoppingSaleSnapshot snapshot} record is created to keep the\nintegrity of the sale history. This API function is for listing up\nsuch snapshot records.\n\nAlso, as you can see from the return type, returned snapshots are\nsummarized, not detailed. If you want to get the detailed information\nof a snapshot, use {@link at } or {@link flipo } function for each snapshot.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s snapshots. Otherwise,\nyou can access to every snapshots of the sales even though the sale has\nbeen closed or suspended." + "description": "List up every snapshots.\n\nWhenever {@link IShoppingSeller seller} updates a\n{@link IShoppingSale sale}, the sale record is not updated but a new\n{@link IShoppingSaleSnapshot snapshot} record is created to keep the\nintegrity of the sale history. This API function is for listing up\nsuch snapshot records.\n\nAlso, as you can see from the return type, returned snapshots are\nsummarized, not detailed. If you want to get the detailed information\nof a snapshot, use {@link at} or {@link flipo} function for each snapshot.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s snapshots. Otherwise,\nyou can access to every snapshots of the sales even though the sale has\nbeen closed or suspended." } }, "/shoppings/admins/sales/{saleId}/snapshots/{id}": { @@ -1575,8 +1573,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id}" }, { "name": "id", @@ -1585,8 +1583,8 @@ "type": "string", "format": "uuid" }, - "description": "Target snapshot's ", - "required": true + "required": true, + "description": " Target snapshot's {@link IShoppingSaleSnapshot.id}" } ], "responses": { @@ -1602,7 +1600,7 @@ } }, "summary": "Get a snapshot info", - "description": "Get a snapshot info.\n\nGet a {@link IShoppingSaleSnapshot snapshot} with detailed information.\n\nAs you can see from the return type, returned snapshot does not contain\nthe {@link IShoppingSale sale} info. If you want to get the sale info,\nuse the {@link flip } function instead.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s snapshots. Otherwise,\nyou can access to every snapshots of the sales even though the sale has\nbeen closed or suspended." + "description": "Get a snapshot info.\n\nGet a {@link IShoppingSaleSnapshot snapshot} with detailed information.\n\nAs you can see from the return type, returned snapshot does not contain\nthe {@link IShoppingSale sale} info. If you want to get the sale info,\nuse the {@link flip} function instead.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s snapshots. Otherwise,\nyou can access to every snapshots of the sales even though the sale has\nbeen closed or suspended." } }, "/shoppings/admins/sales/{saleId}/snapshots/{id}/flip": { @@ -1618,8 +1616,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id}" }, { "name": "id", @@ -1628,8 +1626,8 @@ "type": "string", "format": "uuid" }, - "description": "Target snapshot's ", - "required": true + "required": true, + "description": " Target snapshot's {@link IShoppingSaleSnapshot.id}" } ], "responses": { @@ -1660,8 +1658,8 @@ "schema": { "type": "string" }, - "description": "Belonged channel's ", - "required": true + "required": true, + "description": " Belonged channel's {@link IShoppingChannel.code }" } ], "requestBody": { @@ -1701,8 +1699,8 @@ "schema": { "type": "string" }, - "description": "Belonged channel's ", - "required": true + "required": true, + "description": " Belonged channel's {@link IShoppingChannel.code }" } ], "responses": { @@ -1736,8 +1734,8 @@ "schema": { "type": "string" }, - "description": "Belonged channel's ", - "required": true + "required": true, + "description": " Belonged channel's {@link IShoppingChannel.code }" }, { "name": "id", @@ -1745,8 +1743,8 @@ "schema": { "type": "string" }, - "description": "Target category's ", - "required": true + "required": true, + "description": " Target category's {@link IShoppingChannelCategory.id}" } ], "requestBody": { @@ -1779,8 +1777,8 @@ "schema": { "type": "string" }, - "description": "Belonged channel's ", - "required": true + "required": true, + "description": " Belonged channel's {@link IShoppingChannel.code }" }, { "name": "id", @@ -1789,8 +1787,8 @@ "type": "string", "format": "uuid" }, - "description": "Target category's ", - "required": true + "required": true, + "description": " Target category's {@link IShoppingChannelCategory.id}" } ], "responses": { @@ -1821,8 +1819,8 @@ "schema": { "type": "string" }, - "description": "Belonged channel's ", - "required": true + "required": true, + "description": " Belonged channel's {@link IShoppingChannel.code }" } ], "requestBody": { @@ -1857,8 +1855,8 @@ "schema": { "type": "string" }, - "description": "Belonged channel's ", - "required": true + "required": true, + "description": " Belonged channel's {@link IShoppingChannel.code }" }, { "name": "id", @@ -1867,8 +1865,8 @@ "type": "string", "format": "uuid" }, - "description": "Target category's ", - "required": true + "required": true, + "description": " Target category's {@link IShoppingChannelCategory.id}" } ], "responses": { @@ -1964,8 +1962,8 @@ "type": "string", "format": "uuid" }, - "description": "Target channel's ", - "required": true + "required": true, + "description": " Target channel's {@link IShoppingChannel.code}" } ], "requestBody": { @@ -1985,7 +1983,7 @@ } }, "summary": "Update a channel", - "description": "Update a channel.\n\nUpdate a {@link IShoppingChannel channel}'s name.\n\nNote that, it is not possible to change the channel's code. If you want to\nto do it forcibly, then {@link create } new one and {@link merge } with it." + "description": "Update a channel.\n\nUpdate a {@link IShoppingChannel channel}'s name.\n\nNote that, it is not possible to change the channel's code. If you want to\nto do it forcibly, then {@link create} new one and {@link merge} with it." }, "get": { "tags": [ @@ -1999,8 +1997,8 @@ "type": "string", "format": "uuid" }, - "description": "Target channel's ", - "required": true + "required": true, + "description": " Target channel's {@link IShoppingChannel.id}" } ], "responses": { @@ -2090,8 +2088,8 @@ "schema": { "type": "string" }, - "description": "Target channel's ", - "required": true + "required": true, + "description": " Target channel's {@link IShoppingChannel.code}" } ], "responses": { @@ -2187,8 +2185,8 @@ "type": "string", "format": "uuid" }, - "description": "Target section's ", - "required": true + "required": true, + "description": " Target section's {@link IShoppingSection.code}" } ], "requestBody": { @@ -2208,7 +2206,7 @@ } }, "summary": "Update a section", - "description": "Update a section.\n\nUpdate a {@link IShoppingSection section}'s name.\n\nNote that, it is not possible to change the section's code. If you want to\nto do it forcibly, then {@link create } new one and {@link merge } with it." + "description": "Update a section.\n\nUpdate a {@link IShoppingSection section}'s name.\n\nNote that, it is not possible to change the section's code. If you want to\nto do it forcibly, then {@link create} new one and {@link merge} with it." }, "get": { "tags": [ @@ -2222,8 +2220,8 @@ "type": "string", "format": "uuid" }, - "description": "Target section's ", - "required": true + "required": true, + "description": " Target section's {@link IShoppingSection.id}" } ], "responses": { @@ -2280,8 +2278,8 @@ "schema": { "type": "string" }, - "description": "Target section's ", - "required": true + "required": true, + "description": " Target section's {@link IShoppingSection.code}" } ], "responses": { @@ -2330,7 +2328,7 @@ } }, "summary": "Refresh the authentication token", - "description": "Refresh the authentication token.\n\nCreate a new {@link IShoppingCustomer.IToken.access access token} of a\n{@link IShoppingCustomer customer} with the pre-issued\n{@link IShoppingCustomer.IToken.refresh refresh} token.\n\nNote that, this function is available until the\n{@link IShoppingCustomer.IToken.refreshable_until } value." + "description": "Refresh the authentication token.\n\nCreate a new {@link IShoppingCustomer.IToken.access access token} of a\n{@link IShoppingCustomer customer} with the pre-issued\n{@link IShoppingCustomer.IToken.refresh refresh} token.\n\nNote that, this function is available until the\n{@link IShoppingCustomer.IToken.refreshable_until} value." } }, "/shoppings/customers/authenticate": { @@ -2383,7 +2381,7 @@ } }, "summary": "Create a new customer record", - "description": "Create a new customer record.\n\nThis shopping mall system defines everyone participating in this market as\na \"customer\". And the customer records are not archived based on individual\n{@link IShoppingCitizen people}, but based on the unit of connection.\nTherefore, even if it is the same person, a new {@link IShoppingCustomer }\nrecord is created every time a connection is made.\n\nTherefore, all Client Applications that access this service must first call\nthis function, report the customer's inflow path to the server, and create\nan {@link IShoppingCustomer.IToken.access access token}. If you skip this\nfunction call, all the other API functions would be prohibited. There is no\nexception, even if you want to {@link activate } your citizenship or\n{@link login } with your {@link IShoppingMember member account}. Before\nauthenticating yourself or logging in, be sure to call this function first.\nThis also applies when an {@link IShoppingAdministrator administrator} or\n{@link IShoppingSeller seller} logs in.\n\nAlso, the authentication token has an\n{@link IShoppingCustomer.IToken.expired_at expiration time}\nand cannot be used permanently. For reference, the authentication token is\nvalid for 3 hours, and if you want to maintain customer authentication even\nafter 3 hours, you must call the {@link refresh } function." + "description": "Create a new customer record.\n\nThis shopping mall system defines everyone participating in this market as\na \"customer\". And the customer records are not archived based on individual\n{@link IShoppingCitizen people}, but based on the unit of connection.\nTherefore, even if it is the same person, a new {@link IShoppingCustomer}\nrecord is created every time a connection is made.\n\nTherefore, all Client Applications that access this service must first call\nthis function, report the customer's inflow path to the server, and create\nan {@link IShoppingCustomer.IToken.access access token}. If you skip this\nfunction call, all the other API functions would be prohibited. There is no\nexception, even if you want to {@link activate} your citizenship or\n{@link login} with your {@link IShoppingMember member account}. Before\nauthenticating yourself or logging in, be sure to call this function first.\nThis also applies when an {@link IShoppingAdministrator administrator} or\n{@link IShoppingSeller seller} logs in.\n\nAlso, the authentication token has an\n{@link IShoppingCustomer.IToken.expired_at expiration time}\nand cannot be used permanently. For reference, the authentication token is\nvalid for 3 hours, and if you want to maintain customer authentication even\nafter 3 hours, you must call the {@link refresh} function." } }, "/shoppings/customers/authenticate/join": { @@ -2416,7 +2414,7 @@ } }, "summary": "Join membership", - "description": "Join membership.\n\n{@link IShoppingCustomer Customer} signs up for\n{@link IShoppingMember membership} of current shopping mall system.\n\nIf you've performed the {@link IShoppingCitizen citizenship}\n{@link activate activation} too, then you can skip the {@link activate }\nfunction calling everytime you log in from now on. Also, if the person had\n{@link IShoppingOrder purchased} with {@link activate } and {@link external }\nfunction calling, you can also access to the order history too. In other\nwords, activity details prior to membership registration can also be\naccessed with continuity.\n\nFor reference, as described in the {@link create } function, before calling\nthis `join` function, you must first create a customer record and token by\ncalling the {@link create } function." + "description": "Join membership.\n\n{@link IShoppingCustomer Customer} signs up for\n{@link IShoppingMember membership} of current shopping mall system.\n\nIf you've performed the {@link IShoppingCitizen citizenship}\n{@link activate activation} too, then you can skip the {@link activate}\nfunction calling everytime you log in from now on. Also, if the person had\n{@link IShoppingOrder purchased} with {@link activate} and {@link external}\nfunction calling, you can also access to the order history too. In other\nwords, activity details prior to membership registration can also be\naccessed with continuity.\n\nFor reference, as described in the {@link create} function, before calling\nthis `join` function, you must first create a customer record and token by\ncalling the {@link create} function." } }, "/shoppings/customers/authenticate/login": { @@ -2449,7 +2447,7 @@ } }, "summary": "Membership login", - "description": "Membership login.\n\n{@link IShoppingCustomer Customer} logs in with his/her\n{@link IShoppingMember membership} account with the email and password.\n\nIf the {@link IShoppingMember member} has previously performed\n{@link activate citizenship activation}, the {@link IShoppingCustomer.citizen }\nvalue would be filled in accordingly. And if the member has also signed up\nas an {@link IShoppingAdministrator administrator} or\n{@link IShoppingSeller seller}, the relevant information is also entered\naccordingly.\n\nFor reference, as described in the {@link create } function, before calling\nthis `login` function, you must first create a customer record and token by\ncalling the {@link create } function." + "description": "Membership login.\n\n{@link IShoppingCustomer Customer} logs in with his/her\n{@link IShoppingMember membership} account with the email and password.\n\nIf the {@link IShoppingMember member} has previously performed\n{@link activate citizenship activation}, the {@link IShoppingCustomer.citizen}\nvalue would be filled in accordingly. And if the member has also signed up\nas an {@link IShoppingAdministrator administrator} or\n{@link IShoppingSeller seller}, the relevant information is also entered\naccordingly.\n\nFor reference, as described in the {@link create} function, before calling\nthis `login` function, you must first create a customer record and token by\ncalling the {@link create} function." } }, "/shoppings/customers/authenticate/activate": { @@ -2482,7 +2480,7 @@ } }, "summary": "Activate citizenship", - "description": "Activate citizenship.\n\n{@link IShoppingCustomer Customer} activates his/her\n{@link IShoppingCitizen citizenship} with mobile number and real name.\n\nIf the custommer already {@link join joined} to the\n{@link IShoppingMember membership}, then you can skip the citizenship\n{@link activation } function calling everytime you log in from now on.\nOf course, such story would be same to the {@link external } function, too.\n\nFor reference, as described in the {@link create } function, before calling\nthis `activate` function, you must first create a customer record and token\nby calling the {@link create } function." + "description": "Activate citizenship.\n\n{@link IShoppingCustomer Customer} activates his/her\n{@link IShoppingCitizen citizenship} with mobile number and real name.\n\nIf the custommer already {@link join joined} to the\n{@link IShoppingMember membership}, then you can skip the citizenship\n{@link activation} function calling everytime you log in from now on.\nOf course, such story would be same to the {@link external} function, too.\n\nFor reference, as described in the {@link create} function, before calling\nthis `activate` function, you must first create a customer record and token\nby calling the {@link create} function." } }, "/shoppings/customers/authenticate/external": { @@ -2515,7 +2513,7 @@ } }, "summary": "Enroll external user info", - "description": "Enroll external user info.\n\n{@link IShoppingCustomer Customer} enrolls his/her\n{@link IShoppingExternalUser external user} information from other service.\n\nIt has similar effect with the {@link join membership joining} function,\nso that if you've performed the {@link IShoppingCitizen citizenship}\n{@link activate activation} too, then you can skip the {@link activate }\nfunction calling everytime you call this `external` function with same\ninfo from now on. Also, if the person had\n{@link IShoppingOrder purchased} with {@link activate } and {@link join }\nfunction calling, you can also access to the order history too. In other\nwords, activity details prior to external server registration can also be\naccessed with continuity.\n\nFor reference, as described in the {@link create } function, before calling\nthis `external` function, you must first create a customer record and token\nby calling the {@link create } function." + "description": "Enroll external user info.\n\n{@link IShoppingCustomer Customer} enrolls his/her\n{@link IShoppingExternalUser external user} information from other service.\n\nIt has similar effect with the {@link join membership joining} function,\nso that if you've performed the {@link IShoppingCitizen citizenship}\n{@link activate activation} too, then you can skip the {@link activate}\nfunction calling everytime you call this `external` function with same\ninfo from now on. Also, if the person had\n{@link IShoppingOrder purchased} with {@link activate} and {@link join}\nfunction calling, you can also access to the order history too. In other\nwords, activity details prior to external server registration can also be\naccessed with continuity.\n\nFor reference, as described in the {@link create} function, before calling\nthis `external` function, you must first create a customer record and token\nby calling the {@link create} function." } }, "/shoppings/customers/authenticate/password/change": { @@ -2589,8 +2587,8 @@ "schema": { "type": "string" }, - "description": "Target coupon's ", - "required": true + "required": true, + "description": " Target coupon's {@link IShoppingCoupon.id}" } ], "responses": { @@ -2686,8 +2684,8 @@ "type": "string", "format": "uuid" }, - "description": "Target coupon ticket's ", - "required": true + "required": true, + "description": " Target coupon ticket's {@link IShoppingCouponTicket.id}" } ], "responses": { @@ -2782,8 +2780,8 @@ "schema": { "type": "string" }, - "description": "Target deposit charge's ", - "required": true + "required": true, + "description": " Target deposit charge's {@link IShoppingDepositCharge.id}" } ], "responses": { @@ -2812,8 +2810,8 @@ "schema": { "type": "string" }, - "description": "Target deposit charge's ", - "required": true + "required": true, + "description": " Target deposit charge's {@link IShoppingDepositCharge.id}" } ], "requestBody": { @@ -2833,7 +2831,7 @@ } }, "summary": "Update a deposit charge application", - "description": "Update a deposit charge application.\n\nUpdate value of a {@link IShoppingDepositCharge deposit charge application}\nthat has been applied by the {@link IShoppingCustomer }.\n\nIf the charge has been {@link IShoppingDepositChargePublish published},\nthen it is not possible to update the deposit charge. Only 410 gone exception\nwould be thrown." + "description": "Update a deposit charge application.\n\nUpdate value of a {@link IShoppingDepositCharge deposit charge application}\nthat has been applied by the {@link IShoppingCustomer}.\n\nIf the charge has been {@link IShoppingDepositChargePublish published},\nthen it is not possible to update the deposit charge. Only 410 gone exception\nwould be thrown." }, "delete": { "tags": [ @@ -2846,8 +2844,8 @@ "schema": { "type": "string" }, - "description": "Target deposit charge's ", - "required": true + "required": true, + "description": " Target deposit charge's {@link IShoppingDepositCharge.id}" } ], "responses": { @@ -2856,7 +2854,7 @@ } }, "summary": "Erase a deposit charge application", - "description": "Erase a deposit charge application.\n\nErase a {@link IShoppingDepositCharge deposit charge application} that has been\napplied by the {@link IShoppingCustomer }.\n\nIf the charge has been {@link IShoppingDepositChargePublish published}, then\nit is not possible to erase the deposit charge. In that case, you've to cancel\nthe payment by calling the {@link publish.cancel } function." + "description": "Erase a deposit charge application.\n\nErase a {@link IShoppingDepositCharge deposit charge application} that has been\napplied by the {@link IShoppingCustomer}.\n\nIf the charge has been {@link IShoppingDepositChargePublish published}, then\nit is not possible to erase the deposit charge. In that case, you've to cancel\nthe payment by calling the {@link publish.cancel} function." } }, "/shoppings/customers/deposits/charges/{chargeId}/publish/able": { @@ -2872,8 +2870,8 @@ "type": "string", "format": "uuid" }, - "description": "Target charge's ", - "required": true + "required": true, + "description": " Target charge's {@link IShoppingDepositCharge.id }" } ], "responses": { @@ -2905,8 +2903,8 @@ "type": "string", "format": "uuid" }, - "description": "Target charge's ", - "required": true + "required": true, + "description": " Target charge's {@link IShoppingDepositCharge.id }" } ], "requestBody": { @@ -2933,7 +2931,7 @@ } }, "summary": "Publish a charge", - "description": "Publish a charge.\n\n{@link IShoppingDepositChargePublish Publish} a\n{@link IShoppingDepositCharge charge} that has been applied by the\n{@link IShoppingCustomer } with payment information gotten from the\npayment vendor system.\n\nAlso, the payment time can be different with the publish time. For example,\nif the payment method is manual bank account transfer, then the payment\nwould be delayed until the customer actually transfer the money. In that\ncase, {@link IShoppingDepositChargePublish.paid_at } would be `null` value,\nso that you have to check it after calling this publish function." + "description": "Publish a charge.\n\n{@link IShoppingDepositChargePublish Publish} a\n{@link IShoppingDepositCharge charge} that has been applied by the\n{@link IShoppingCustomer} with payment information gotten from the\npayment vendor system.\n\nAlso, the payment time can be different with the publish time. For example,\nif the payment method is manual bank account transfer, then the payment\nwould be delayed until the customer actually transfer the money. In that\ncase, {@link IShoppingDepositChargePublish.paid_at} would be `null` value,\nso that you have to check it after calling this publish function." } }, "/shoppings/customers/deposits/histories": { @@ -2982,7 +2980,6 @@ "type": "string", "format": "uuid" }, - "description": "", "required": true } ], @@ -3070,8 +3067,8 @@ "type": "string", "format": "uuid" }, - "description": "Target mileage history's ", - "required": true + "required": true, + "description": " Target mileage history's {@link IShoppingMileageHistory.id}" } ], "responses": { @@ -3132,8 +3129,8 @@ } ] }, - "description": "Belonged cart's ID", - "required": true + "required": true, + "description": " Belonged cart's ID" } ], "requestBody": { @@ -3160,7 +3157,7 @@ } }, "summary": "List of every commodities", - "description": "List of every commodities.\n\nList up every {@link IShoppingCartCommodity commodities} in the\nshopping cart with {@link IPage pagination}.\n\nIf the *cartId* is not specified but `null` value assigned, then every\ncart would be targetted. Also, you can limit the result by configuring\n{@link IShoppingCartCommodity.IRequest.search search condition} in the\nrequest body. Furthermore, it is possible to customize sequence order of\nrecords by configuring {@link IShoppingCartCommodity.IRequest.sort }.\n\nFor reference, when some commodity be {@link IShoppingOrder ordered} and\n{@link IShoppingOrderPublish published}, then it would not be appread in\nthe shopping cart more. Otherwise, the order has not been published yet,\nit would be appread in the shopping cart and still enable to create a new\n{@link IShoppingOrder order application} with the same commodity.\n\nOf course, if the target {@link IShoppingSale sale} has been suspended, or\n{@link IShoppingSaleUnitStockInventory out of stock}, then it would not be\nappread in the shopping cart more, either." + "description": "List of every commodities.\n\nList up every {@link IShoppingCartCommodity commodities} in the\nshopping cart with {@link IPage pagination}.\n\nIf the *cartId* is not specified but `null` value assigned, then every\ncart would be targetted. Also, you can limit the result by configuring\n{@link IShoppingCartCommodity.IRequest.search search condition} in the\nrequest body. Furthermore, it is possible to customize sequence order of\nrecords by configuring {@link IShoppingCartCommodity.IRequest.sort}.\n\nFor reference, when some commodity be {@link IShoppingOrder ordered} and\n{@link IShoppingOrderPublish published}, then it would not be appread in\nthe shopping cart more. Otherwise, the order has not been published yet,\nit would be appread in the shopping cart and still enable to create a new\n{@link IShoppingOrder order application} with the same commodity.\n\nOf course, if the target {@link IShoppingSale sale} has been suspended, or\n{@link IShoppingSaleUnitStockInventory out of stock}, then it would not be\nappread in the shopping cart more, either." }, "post": { "tags": [ @@ -3181,8 +3178,8 @@ } ] }, - "description": "Belonged cart's ID", - "required": true + "required": true, + "description": " Belonged cart's ID" } ], "requestBody": { @@ -3209,7 +3206,7 @@ } }, "summary": "Create a new commodity", - "description": "Create a new commodity.\n\nCreate a new {@link IShoppingCartCommodity commodity} into a specific\nshopping cart.\n\nIf {@link IShoppingCartCommodity.ICreate.accumulate } has `true` value\nand there's some same commodity that composed with same\n{@link IShoppingSaleUnitStock.IInvert stocks and quantities},\nthen new commodity would not be created but the volume would be accumulated.\n\nAlso, if the *cartId* is not specified but `null` value assigned, then\nordinary cart would be utilized or create new one considering the\nexistence of the previous cart.\n\nBy the way, if the target {@link IShoppingSale sale} has been suspended or\n{@link IShoppingSaleUnitStockInventory out of stock}, then 410 gone error\nwould be thrown. Therefore, it would better to check the target sale and\n{@link IShoppingSaleUnitStock stock}'s status before." + "description": "Create a new commodity.\n\nCreate a new {@link IShoppingCartCommodity commodity} into a specific\nshopping cart.\n\nIf {@link IShoppingCartCommodity.ICreate.accumulate} has `true` value\nand there's some same commodity that composed with same\n{@link IShoppingSaleUnitStock.IInvert stocks and quantities},\nthen new commodity would not be created but the volume would be accumulated.\n\nAlso, if the *cartId* is not specified but `null` value assigned, then\nordinary cart would be utilized or create new one considering the\nexistence of the previous cart.\n\nBy the way, if the target {@link IShoppingSale sale} has been suspended or\n{@link IShoppingSaleUnitStockInventory out of stock}, then 410 gone error\nwould be thrown. Therefore, it would better to check the target sale and\n{@link IShoppingSaleUnitStock stock}'s status before." } }, "/shoppings/customers/carts/{cartId}/commodities/{id}": { @@ -3232,8 +3229,8 @@ } ] }, - "description": "Belonged cart's ID", - "required": true + "required": true, + "description": " Belonged cart's ID" }, { "name": "id", @@ -3242,8 +3239,8 @@ "type": "string", "format": "uuid" }, - "description": "Target commodity's ", - "required": true + "required": true, + "description": " Target commodity's {@link IShoppingCartCommodity.id}" } ], "responses": { @@ -3259,7 +3256,7 @@ } }, "summary": "Get a commodity", - "description": "Get a commodity.\n\nGet a {@link IShoppingCartCommodity commodity} record of the shopping cart.\n\nIf the *cartId* is different with the belonged cart's ID, then 404 not\nfound exception would be thrown. Otherwise, the *cartId* has `null` value,\nsuch dependency checking would be skipped, but still ownership would be\nvalidated.\n\nAlso, if target {@link IShoppingSale sale} has been suspended or\n{@link IShoppingSaleUnitStockInventory out of stock}, then 410 gone error\nwould be thrown. Therefore, even if you've created a commodity successfully\nwith the {@link create } method, it still can be failed when you access the\ncommodity with this {@link at } method." + "description": "Get a commodity.\n\nGet a {@link IShoppingCartCommodity commodity} record of the shopping cart.\n\nIf the *cartId* is different with the belonged cart's ID, then 404 not\nfound exception would be thrown. Otherwise, the *cartId* has `null` value,\nsuch dependency checking would be skipped, but still ownership would be\nvalidated.\n\nAlso, if target {@link IShoppingSale sale} has been suspended or\n{@link IShoppingSaleUnitStockInventory out of stock}, then 410 gone error\nwould be thrown. Therefore, even if you've created a commodity successfully\nwith the {@link create} method, it still can be failed when you access the\ncommodity with this {@link at} method." }, "put": { "tags": [ @@ -3280,8 +3277,8 @@ } ] }, - "description": "Belonged cart's ID", - "required": true + "required": true, + "description": " Belonged cart's ID" }, { "name": "id", @@ -3290,8 +3287,8 @@ "type": "string", "format": "uuid" }, - "description": "Target commodity's ", - "required": true + "required": true, + "description": " Target commodity's {@link IShoppingCartCommodity.id}" } ], "requestBody": { @@ -3332,8 +3329,8 @@ } ] }, - "description": "Belonged cart's ID", - "required": true + "required": true, + "description": " Belonged cart's ID" }, { "name": "id", @@ -3342,8 +3339,8 @@ "type": "string", "format": "uuid" }, - "description": "Target commodity's ", - "required": true + "required": true, + "description": " Target commodity's {@link IShoppingCartCommodity.id}" } ], "responses": { @@ -3375,8 +3372,8 @@ } ] }, - "description": "Belonged cart's ID", - "required": true + "required": true, + "description": " Belonged cart's ID" }, { "name": "id", @@ -3385,8 +3382,8 @@ "type": "string", "format": "uuid" }, - "description": "Target commodity's ", - "required": true + "required": true, + "description": " Target commodity's {@link IShoppingCartCommodity.id}" } ], "responses": { @@ -3402,7 +3399,7 @@ } }, "summary": "Get replica of a commodity", - "description": "Get replica of a commodity.\n\nGet a {@link IShoppingCartCommodity.ICreate } typed info of the target\ncommodity for replication.\n\nBy the way, if the *cartId* is different with the belonged cart's ID,\nthen 404 not found exception would be thrown. Otherwise, the *cartId*\nhas `null` value, such dependency checking would be skipped, but still\nownership would be validated.\n\nAlso, if target {@link IShoppingSale sale} has been suspended or\n{@link IShoppingSaleUnitStockInventory out of stock} suddenly,\nthen 410 gone error would be thrown, either." + "description": "Get replica of a commodity.\n\nGet a {@link IShoppingCartCommodity.ICreate} typed info of the target\ncommodity for replication.\n\nBy the way, if the *cartId* is different with the belonged cart's ID,\nthen 404 not found exception would be thrown. Otherwise, the *cartId*\nhas `null` value, such dependency checking would be skipped, but still\nownership would be validated.\n\nAlso, if target {@link IShoppingSale sale} has been suspended or\n{@link IShoppingSaleUnitStockInventory out of stock} suddenly,\nthen 410 gone error would be thrown, either." } }, "/shoppings/customers/carts/{cartId}/commodities/discountable": { @@ -3425,8 +3422,8 @@ } ] }, - "description": "Belonged cart's ID", - "required": true + "required": true, + "description": " Belonged cart's ID" } ], "requestBody": { @@ -3453,7 +3450,7 @@ } }, "summary": "Get discountable info", - "description": "Get discountable info.\n\nCompute discountable features about the\n {@link IShoppingCartCommodity shopping cart} even including\nnon-carted {@link IShoppingSale sales}.\n\nReturned {@link IShoppingCartDiscountable } contains including\ncombinations of adjustable {@link IShoppingCoupon coupons},\nwithdrawable {@link IShoppingDepositHistory deposits} and\n{@link IShoppingMileageHistory mileages}.\n\nAlso, if you want to know the discountable info about some specific\nsales that have not been carted yet, specify the sales\nto the {@link IShoppingCartDiscountable.pseudos } property with composing\n{@link IShoppingCartCommodity.ICreate creation info of the commodities}.\nThen, they would be included in the discountable info." + "description": "Get discountable info.\n\nCompute discountable features about the\n {@link IShoppingCartCommodity shopping cart} even including\nnon-carted {@link IShoppingSale sales}.\n\nReturned {@link IShoppingCartDiscountable} contains including\ncombinations of adjustable {@link IShoppingCoupon coupons},\nwithdrawable {@link IShoppingDepositHistory deposits} and\n{@link IShoppingMileageHistory mileages}.\n\nAlso, if you want to know the discountable info about some specific\nsales that have not been carted yet, specify the sales\nto the {@link IShoppingCartDiscountable.pseudos} property with composing\n{@link IShoppingCartCommodity.ICreate creation info of the commodities}.\nThen, they would be included in the discountable info." } }, "/shoppings/customers/orders": { @@ -3486,7 +3483,7 @@ } }, "summary": "Create a new order application", - "description": "Create a new order application.\n\nCreate a new {@link IShoppingOrder order application} from a\n{@link IShoppingCartCommodity shopping cart} that has been composed by the\n{@link IShoppingCustomer }. Of course, do not need to put every commodities\nto the order, but possible to select some of them by the customer.\n\nBy the way, this function does not mean completion the order, but means\njust customer is appling the order. The order be completed only when customer\n{@link IShoppingOrderPublish.paid_at pays} the order." + "description": "Create a new order application.\n\nCreate a new {@link IShoppingOrder order application} from a\n{@link IShoppingCartCommodity shopping cart} that has been composed by the\n{@link IShoppingCustomer}. Of course, do not need to put every commodities\nto the order, but possible to select some of them by the customer.\n\nBy the way, this function does not mean completion the order, but means\njust customer is appling the order. The order be completed only when customer\n{@link IShoppingOrderPublish.paid_at pays} the order." }, "patch": { "tags": [ @@ -3533,8 +3530,8 @@ "type": "string", "format": "uuid" }, - "description": "Target order's ", - "required": true + "required": true, + "description": " Target order's {@link IShoppingOrder.id}" } ], "responses": { @@ -3543,7 +3540,7 @@ } }, "summary": "Erase an order application", - "description": "Erase an order application.\n\nErase an order application that has been applied by the\n{@link IShoppingCustomer }.\n\nIf the order has been {@link IShoppingOrderPublish published}, then it is\nnot possible to erase the order. In that case, you've to cancel the\npayment by calling the {@link publish.cancel } function." + "description": "Erase an order application.\n\nErase an order application that has been applied by the\n{@link IShoppingCustomer}.\n\nIf the order has been {@link IShoppingOrderPublish published}, then it is\nnot possible to erase the order. In that case, you've to cancel the\npayment by calling the {@link publish.cancel} function." }, "get": { "tags": [ @@ -3557,8 +3554,8 @@ "type": "string", "format": "uuid" }, - "description": "Target order's ", - "required": true + "required": true, + "description": " Target order's {@link IShoppingOrder.id}" } ], "responses": { @@ -3590,8 +3587,8 @@ "type": "string", "format": "uuid" }, - "description": "Target order's ", - "required": true + "required": true, + "description": " Target order's {@link IShoppingOrder.id}" } ], "responses": { @@ -3623,8 +3620,8 @@ "type": "string", "format": "uuid" }, - "description": "Target order's ", - "required": true + "required": true, + "description": " Target order's {@link IShoppingOrder.id}" } ], "requestBody": { @@ -3651,7 +3648,7 @@ } }, "summary": "Get discountable info", - "description": "Get discountable info.\n\nCompute discountable features about the {@link IShoppingOrder }.\n\nRetured {@link IShoppingOrderDiscountable } contains including\ncombinations of adjustable {@link IShoppingCoupon coupons},\nwithdrawable {@link IShoppingDepositHistory deposits}\nand {@link IShoppingMileageHistory mileages}.\n\nOf course, returned features are valid only when the order has not\nbeen {@link IShoppingOrderPublish published} yet. If the order has\nalready been published, then no way to discount the price more." + "description": "Get discountable info.\n\nCompute discountable features about the {@link IShoppingOrder}.\n\nRetured {@link IShoppingOrderDiscountable} contains including\ncombinations of adjustable {@link IShoppingCoupon coupons},\nwithdrawable {@link IShoppingDepositHistory deposits}\nand {@link IShoppingMileageHistory mileages}.\n\nOf course, returned features are valid only when the order has not\nbeen {@link IShoppingOrderPublish published} yet. If the order has\nalready been published, then no way to discount the price more." } }, "/shoppings/customers/orders/{id}/discount": { @@ -3667,8 +3664,8 @@ "type": "string", "format": "uuid" }, - "description": "Target order's ", - "required": true + "required": true, + "description": " Target order's {@link IShoppingOrder.id}" } ], "requestBody": { @@ -3695,7 +3692,7 @@ } }, "summary": "Discount the order", - "description": "Discount the order.\n\nDiscount total price of the {@link IShoppingOrder } by adjusting\n{@link IShoppingCoupon coupons}, {@link IShoppingDepositHistory deposits}\nand {@link IShoppingMileageHistory mileages}. If amount of discount\nfeatures are equal to the total price of the order, it is possible to\n{@link IShoppingOrderPublish publish} it without any cash.\n\nBy the way, the discounting features must be valid. If not, 428\nunprocessable entity error would be thrown. To know which features are\nadjustable or withdrawable, call the {@link discountable } function\nbefore." + "description": "Discount the order.\n\nDiscount total price of the {@link IShoppingOrder} by adjusting\n{@link IShoppingCoupon coupons}, {@link IShoppingDepositHistory deposits}\nand {@link IShoppingMileageHistory mileages}. If amount of discount\nfeatures are equal to the total price of the order, it is possible to\n{@link IShoppingOrderPublish publish} it without any cash.\n\nBy the way, the discounting features must be valid. If not, 428\nunprocessable entity error would be thrown. To know which features are\nadjustable or withdrawable, call the {@link discountable} function\nbefore." } }, "/shoppings/customers/orders/{orderId}/goods/{id}/confirm": { @@ -3711,8 +3708,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged order's ", - "required": true + "required": true, + "description": " Belonged order's {@link IShoppingOrder.id }" }, { "name": "id", @@ -3721,8 +3718,8 @@ "type": "string", "format": "uuid" }, - "description": "Target good's ", - "required": true + "required": true, + "description": " Target good's {@link IShoppingOrderGood.id }" } ], "responses": { @@ -3747,8 +3744,8 @@ "type": "string", "format": "uuid" }, - "description": "Target order's ", - "required": true + "required": true, + "description": " Target order's {@link IShoppingOrder.id }" } ], "responses": { @@ -3780,8 +3777,8 @@ "type": "string", "format": "uuid" }, - "description": "Target order's ", - "required": true + "required": true, + "description": " Target order's {@link IShoppingOrder.id }" } ], "requestBody": { @@ -3796,7 +3793,14 @@ { "$ref": "#/components/schemas/IShoppingOrderPublish.IZeroCreate" } - ] + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "cash": "#/components/schemas/IShoppingOrderPublish.ICashCreate", + "zero": "#/components/schemas/IShoppingOrderPublish.IZeroCreate" + } + } } } }, @@ -3815,7 +3819,7 @@ } }, "summary": "Publish an order", - "description": "Publish an order.\n\n{@link IShoppingOrderPublish Publish} an {@link IShoppingOrder order} that\nhas been applied by the {@link IShoppingCustomer } with\n{@link IShoppingAddress address} to delivery and payment information gotten\nfrom the payment vendor system.\n\nIf the order has been discounted for entire order price, then no need\nto send payment vendor info. Instead, only address info is required.\n\nAlso, the payment time can be different with the publish time. For example,\nif the payment method is manual bank account transfer, then the payment\nwould be delayed until the customer actually transfer the money. In that\ncase, {@link IShoppingOrderPublish.paid_at } would be `null` value, so\nthat you have to check it after calling this publish function." + "description": "Publish an order.\n\n{@link IShoppingOrderPublish Publish} an {@link IShoppingOrder order} that\nhas been applied by the {@link IShoppingCustomer} with\n{@link IShoppingAddress address} to delivery and payment information gotten\nfrom the payment vendor system.\n\nIf the order has been discounted for entire order price, then no need\nto send payment vendor info. Instead, only address info is required.\n\nAlso, the payment time can be different with the publish time. For example,\nif the payment method is manual bank account transfer, then the payment\nwould be delayed until the customer actually transfer the money. In that\ncase, {@link IShoppingOrderPublish.paid_at} would be `null` value, so\nthat you have to check it after calling this publish function." }, "delete": { "tags": [ @@ -3829,8 +3833,8 @@ "type": "string", "format": "uuid" }, - "description": "Target order's ", - "required": true + "required": true, + "description": " Target order's {@link IShoppingOrder.id }" } ], "responses": { @@ -3872,7 +3876,7 @@ } }, "summary": "List up every summarized sales", - "description": "List up every summarized sales.\n\nList up every {@link IShoppingSale.ISummary summarized sales}.\n\nAs you can see, returned sales are summarized, not detailed. If you want\nto get the detailed information of a sale, use {@link at } function for\neach sale.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}s. Otherwise you're a\n{@link IShoppingCustomer customer}, you can see only the operating\nsales in the market. You can't see the unopened, closed, or suspended\nsales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSale.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingSale.IRequest.sort sort condition}." + "description": "List up every summarized sales.\n\nList up every {@link IShoppingSale.ISummary summarized sales}.\n\nAs you can see, returned sales are summarized, not detailed. If you want\nto get the detailed information of a sale, use {@link at} function for\neach sale.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}s. Otherwise you're a\n{@link IShoppingCustomer customer}, you can see only the operating\nsales in the market. You can't see the unopened, closed, or suspended\nsales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSale.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingSale.IRequest.sort sort condition}." } }, "/shoppings/customers/sales/{id}": { @@ -3888,8 +3892,8 @@ "type": "string", "format": "uuid" }, - "description": "Target sale's ", - "required": true + "required": true, + "description": " Target sale's {@link IShoppingSale.id}" } ], "responses": { @@ -3921,8 +3925,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -3931,8 +3935,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged inquiry's ", - "required": true + "required": true, + "description": " Belonged inquiry's {@link IShoppingSaleInquiry.id }" } ], "requestBody": { @@ -3973,8 +3977,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -3983,8 +3987,8 @@ "type": "string", "format": "uuid" }, - "description": "Target inquiry's ", - "required": true + "required": true, + "description": " Target inquiry's {@link IShoppingSaleInquiry.id }" } ], "requestBody": { @@ -4027,8 +4031,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -4037,8 +4041,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged inquiry's ", - "required": true + "required": true, + "description": " Belonged inquiry's {@link IShoppingSaleInquiry.id }" }, { "name": "id", @@ -4047,8 +4051,8 @@ "type": "string", "format": "uuid" }, - "description": "Target inquiry comment's ", - "required": true + "required": true, + "description": " Target inquiry comment's {@link IShoppingSaleInquiryComment.id}" } ], "responses": { @@ -4078,8 +4082,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -4088,8 +4092,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged inquiry's ", - "required": true + "required": true, + "description": " Belonged inquiry's {@link IShoppingSaleInquiry.id }" }, { "name": "id", @@ -4098,8 +4102,8 @@ "type": "string", "format": "uuid" }, - "description": "Target inquiry comment's ", - "required": true + "required": true, + "description": " Target inquiry comment's {@link IShoppingSaleInquiryComment.id}" } ], "requestBody": { @@ -4142,8 +4146,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" } ], "requestBody": { @@ -4184,8 +4188,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" } ], "requestBody": { @@ -4212,7 +4216,7 @@ } }, "summary": "List up every summarized questions", - "description": "List up every summarized questions.\n\nList up every {@link IShoppingSaleQuestion.ISummary summarized questions} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned questions are summarized, not detailed. If you want\nto get the detailed information of a question, use {@link adridges } function\nor {@link at } function for each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.ISummary.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.ISummary.secret } with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." + "description": "List up every summarized questions.\n\nList up every {@link IShoppingSaleQuestion.ISummary summarized questions} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned questions are summarized, not detailed. If you want\nto get the detailed information of a question, use {@link adridges} function\nor {@link at} function for each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.ISummary.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.ISummary.secret} with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." } }, "/shoppings/customers/sales/{saleId}/questions/{id}": { @@ -4228,8 +4232,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "id", @@ -4238,8 +4242,8 @@ "type": "string", "format": "uuid" }, - "description": "Target question's ", - "required": true + "required": true, + "description": " Target question's {@link IShoppingSaleQuestion.id}" } ], "requestBody": { @@ -4280,8 +4284,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "id", @@ -4290,8 +4294,8 @@ "type": "string", "format": "uuid" }, - "description": "Target question's ", - "required": true + "required": true, + "description": " Target question's {@link IShoppingSaleQuestion.id}" } ], "responses": { @@ -4307,7 +4311,7 @@ } }, "summary": "Get a question info", - "description": "Get a question info.\n\nGet a detailed {@link IShoppingSaleQuestion question} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s question. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nquestions of the sales except the {@link IShoppingSaleQuestion.secret }\nvalue is `false`." + "description": "Get a question info.\n\nGet a detailed {@link IShoppingSaleQuestion question} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s question. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nquestions of the sales except the {@link IShoppingSaleQuestion.secret}\nvalue is `false`." } }, "/shoppings/customers/sales/{saleId}/questions/abridges": { @@ -4323,8 +4327,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" } ], "requestBody": { @@ -4351,7 +4355,7 @@ } }, "summary": "List up every abridged questions", - "description": "List up every abridged questions.\n\nList up every {@link IShoppingSaleQuestion.IAbridge abridged questions} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned questions are abridged, not detailed. If you want\nto get the detailed information of a question, use {@link at } function\nfor each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.IAridge.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.IAridge.secret } with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." + "description": "List up every abridged questions.\n\nList up every {@link IShoppingSaleQuestion.IAbridge abridged questions} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned questions are abridged, not detailed. If you want\nto get the detailed information of a question, use {@link at} function\nfor each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.IAridge.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.IAridge.secret} with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." } }, "/shoppings/customers/sales/{saleId}/reviews/{inquiryId}/comments": { @@ -4367,8 +4371,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -4377,8 +4381,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged inquiry's ", - "required": true + "required": true, + "description": " Belonged inquiry's {@link IShoppingSaleInquiry.id }" } ], "requestBody": { @@ -4419,8 +4423,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -4429,8 +4433,8 @@ "type": "string", "format": "uuid" }, - "description": "Target inquiry's ", - "required": true + "required": true, + "description": " Target inquiry's {@link IShoppingSaleInquiry.id }" } ], "requestBody": { @@ -4473,8 +4477,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -4483,8 +4487,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged inquiry's ", - "required": true + "required": true, + "description": " Belonged inquiry's {@link IShoppingSaleInquiry.id }" }, { "name": "id", @@ -4493,8 +4497,8 @@ "type": "string", "format": "uuid" }, - "description": "Target inquiry comment's ", - "required": true + "required": true, + "description": " Target inquiry comment's {@link IShoppingSaleInquiryComment.id}" } ], "responses": { @@ -4524,8 +4528,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -4534,8 +4538,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged inquiry's ", - "required": true + "required": true, + "description": " Belonged inquiry's {@link IShoppingSaleInquiry.id }" }, { "name": "id", @@ -4544,8 +4548,8 @@ "type": "string", "format": "uuid" }, - "description": "Target inquiry comment's ", - "required": true + "required": true, + "description": " Target inquiry comment's {@link IShoppingSaleInquiryComment.id}" } ], "requestBody": { @@ -4588,8 +4592,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" } ], "requestBody": { @@ -4630,8 +4634,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" } ], "requestBody": { @@ -4658,7 +4662,7 @@ } }, "summary": "List up every summarized reviews", - "description": "List up every summarized reviews.\n\nList up every {@link IShoppingSaleReview.ISummary summarized reviews} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned reviews are summarized, not detailed. If you want\nto get the detailed information of a review, use {@link adridges } function\nor {@link at } function for each article.\n\nAlso, returned review has {@link IShoppingSaleReview.ISummary.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." + "description": "List up every summarized reviews.\n\nList up every {@link IShoppingSaleReview.ISummary summarized reviews} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned reviews are summarized, not detailed. If you want\nto get the detailed information of a review, use {@link adridges} function\nor {@link at} function for each article.\n\nAlso, returned review has {@link IShoppingSaleReview.ISummary.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." } }, "/shoppings/customers/sales/{saleId}/reviews/{id}": { @@ -4674,8 +4678,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "id", @@ -4684,8 +4688,8 @@ "type": "string", "format": "uuid" }, - "description": "Target review's ", - "required": true + "required": true, + "description": " Target review's {@link IShoppingSaleReview.id}" } ], "requestBody": { @@ -4726,8 +4730,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "id", @@ -4736,8 +4740,8 @@ "type": "string", "format": "uuid" }, - "description": "Target review's ", - "required": true + "required": true, + "description": " Target review's {@link IShoppingSaleReview.id}" } ], "responses": { @@ -4769,8 +4773,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" } ], "requestBody": { @@ -4797,7 +4801,7 @@ } }, "summary": "List up every abridged reviews", - "description": "List up every abridged reviews.\n\nList up every {@link IShoppingSaleReview.IAbridge abridged reviews} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned reviews are abridged, not detailed. If you want\nto get the detailed information of a review, use {@link at } function\nfor each article.\n\nAlso, returned review has {@link IShoppingSaleReview.IAridge.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." + "description": "List up every abridged reviews.\n\nList up every {@link IShoppingSaleReview.IAbridge abridged reviews} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned reviews are abridged, not detailed. If you want\nto get the detailed information of a review, use {@link at} function\nfor each article.\n\nAlso, returned review has {@link IShoppingSaleReview.IAridge.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." } }, "/shoppings/customers/sales/{saleId}/snapshots": { @@ -4813,8 +4817,8 @@ "type": "string", "format": "uuid" }, - "description": "Target sale's ", - "required": true + "required": true, + "description": " Target sale's {@link IShoppingSale.id}" } ], "requestBody": { @@ -4841,7 +4845,7 @@ } }, "summary": "List up every snapshots", - "description": "List up every snapshots.\n\nWhenever {@link IShoppingSeller seller} updates a\n{@link IShoppingSale sale}, the sale record is not updated but a new\n{@link IShoppingSaleSnapshot snapshot} record is created to keep the\nintegrity of the sale history. This API function is for listing up\nsuch snapshot records.\n\nAlso, as you can see from the return type, returned snapshots are\nsummarized, not detailed. If you want to get the detailed information\nof a snapshot, use {@link at } or {@link flipo } function for each snapshot.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s snapshots. Otherwise,\nyou can access to every snapshots of the sales even though the sale has\nbeen closed or suspended." + "description": "List up every snapshots.\n\nWhenever {@link IShoppingSeller seller} updates a\n{@link IShoppingSale sale}, the sale record is not updated but a new\n{@link IShoppingSaleSnapshot snapshot} record is created to keep the\nintegrity of the sale history. This API function is for listing up\nsuch snapshot records.\n\nAlso, as you can see from the return type, returned snapshots are\nsummarized, not detailed. If you want to get the detailed information\nof a snapshot, use {@link at} or {@link flipo} function for each snapshot.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s snapshots. Otherwise,\nyou can access to every snapshots of the sales even though the sale has\nbeen closed or suspended." } }, "/shoppings/customers/sales/{saleId}/snapshots/{id}": { @@ -4857,8 +4861,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id}" }, { "name": "id", @@ -4867,8 +4871,8 @@ "type": "string", "format": "uuid" }, - "description": "Target snapshot's ", - "required": true + "required": true, + "description": " Target snapshot's {@link IShoppingSaleSnapshot.id}" } ], "responses": { @@ -4884,7 +4888,7 @@ } }, "summary": "Get a snapshot info", - "description": "Get a snapshot info.\n\nGet a {@link IShoppingSaleSnapshot snapshot} with detailed information.\n\nAs you can see from the return type, returned snapshot does not contain\nthe {@link IShoppingSale sale} info. If you want to get the sale info,\nuse the {@link flip } function instead.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s snapshots. Otherwise,\nyou can access to every snapshots of the sales even though the sale has\nbeen closed or suspended." + "description": "Get a snapshot info.\n\nGet a {@link IShoppingSaleSnapshot snapshot} with detailed information.\n\nAs you can see from the return type, returned snapshot does not contain\nthe {@link IShoppingSale sale} info. If you want to get the sale info,\nuse the {@link flip} function instead.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s snapshots. Otherwise,\nyou can access to every snapshots of the sales even though the sale has\nbeen closed or suspended." } }, "/shoppings/customers/sales/{saleId}/snapshots/{id}/flip": { @@ -4900,8 +4904,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id}" }, { "name": "id", @@ -4910,8 +4914,8 @@ "type": "string", "format": "uuid" }, - "description": "Target snapshot's ", - "required": true + "required": true, + "description": " Target snapshot's {@link IShoppingSaleSnapshot.id}" } ], "responses": { @@ -4942,8 +4946,8 @@ "schema": { "type": "string" }, - "description": "Belonged channel's ", - "required": true + "required": true, + "description": " Belonged channel's {@link IShoppingChannel.code }" } ], "responses": { @@ -4977,8 +4981,8 @@ "schema": { "type": "string" }, - "description": "Belonged channel's ", - "required": true + "required": true, + "description": " Belonged channel's {@link IShoppingChannel.code }" }, { "name": "id", @@ -4987,8 +4991,8 @@ "type": "string", "format": "uuid" }, - "description": "Target category's ", - "required": true + "required": true, + "description": " Target category's {@link IShoppingChannelCategory.id}" } ], "responses": { @@ -5019,8 +5023,8 @@ "schema": { "type": "string" }, - "description": "Belonged channel's ", - "required": true + "required": true, + "description": " Belonged channel's {@link IShoppingChannel.code }" }, { "name": "id", @@ -5029,8 +5033,8 @@ "type": "string", "format": "uuid" }, - "description": "Target category's ", - "required": true + "required": true, + "description": " Target category's {@link IShoppingChannelCategory.id}" } ], "responses": { @@ -5128,8 +5132,8 @@ "type": "string", "format": "uuid" }, - "description": "Target channel's ", - "required": true + "required": true, + "description": " Target channel's {@link IShoppingChannel.id}" } ], "responses": { @@ -5160,8 +5164,8 @@ "schema": { "type": "string" }, - "description": "Target channel's ", - "required": true + "required": true, + "description": " Target channel's {@link IShoppingChannel.code}" } ], "responses": { @@ -5226,8 +5230,8 @@ "type": "string", "format": "uuid" }, - "description": "Target section's ", - "required": true + "required": true, + "description": " Target section's {@link IShoppingSection.id}" } ], "responses": { @@ -5258,8 +5262,8 @@ "schema": { "type": "string" }, - "description": "Target section's ", - "required": true + "required": true, + "description": " Target section's {@link IShoppingSection.code}" } ], "responses": { @@ -5361,7 +5365,7 @@ } }, "summary": "Login as an seller", - "description": "Login as an seller.\n\nLogin as an seller with {@link IShoppingSeller.ILogin login info}.\n\nThis method has exactly same effect with\n{@link ShoppingApi.functional.customers.authenticate.login } function, but\nreturned type is a llttle different. The similar function returns\n{@link IShoppingCustomer } type that starting from the customer information, so\nthat you have to access to the seller info through\n`customer.member.seller`. In contrast with that, this method returns\n{@link IShoppingSeller.IInvert } type that starting from the seller\ninfo, so that can access to the customer info through `seller.customer`.\n\nOf course, to use this function, you had to {@link join } as an seller\nbefore. If not, 403 forbidden exception would be thrown," + "description": "Login as an seller.\n\nLogin as an seller with {@link IShoppingSeller.ILogin login info}.\n\nThis method has exactly same effect with\n{@link ShoppingApi.functional.customers.authenticate.login} function, but\nreturned type is a llttle different. The similar function returns\n{@link IShoppingCustomer} type that starting from the customer information, so\nthat you have to access to the seller info through\n`customer.member.seller`. In contrast with that, this method returns\n{@link IShoppingSeller.IInvert} type that starting from the seller\ninfo, so that can access to the customer info through `seller.customer`.\n\nOf course, to use this function, you had to {@link join} as an seller\nbefore. If not, 403 forbidden exception would be thrown," } }, "/shoppings/sellers/deliveries": { @@ -5425,7 +5429,7 @@ } }, "summary": "Create a delivery", - "description": "Create a delivery.\n\nCreate a {@link IShoppingDelivery delivery} record targetting\n{@link IShoppingOrder orders}, their {@link IShoppingOrderGood goods} and\n{@link IShoppingSaleUnitStock stocks} ({@link IShoppingDeliveryPiece }) with\n{@link IShoppingDeliveryJourney journeys} and\n{@link IShoppingDeliveryShipper shippers} info.\n\nNote that, composition of the {@link IShoppingDeliveryPiece } must not over\nthe required. To identify which pieces are required, recommend to call\nthe {@link incompletes } function with target orders'\n{@link IShoppingOrderPublish.id }s before calling this one." + "description": "Create a delivery.\n\nCreate a {@link IShoppingDelivery delivery} record targetting\n{@link IShoppingOrder orders}, their {@link IShoppingOrderGood goods} and\n{@link IShoppingSaleUnitStock stocks} ({@link IShoppingDeliveryPiece}) with\n{@link IShoppingDeliveryJourney journeys} and\n{@link IShoppingDeliveryShipper shippers} info.\n\nNote that, composition of the {@link IShoppingDeliveryPiece} must not over\nthe required. To identify which pieces are required, recommend to call\nthe {@link incompletes} function with target orders'\n{@link IShoppingOrderPublish.id}s before calling this one." } }, "/shoppings/sellers/deliveries/{id}": { @@ -5441,8 +5445,8 @@ "type": "string", "format": "uuid" }, - "description": "Target delivery's ", - "required": true + "required": true, + "description": " Target delivery's {@link IShoppingDelivery.id}" } ], "responses": { @@ -5494,7 +5498,7 @@ } }, "summary": "Get list of incomplete pieces", - "description": "Get list of incomplete pieces.\n\nGet list of {@link IShoppingDeliveryPiece incomplete pieces} of target\norders' {@link IShoppingOrderPublish.id }s.\n\nIf you specify target orders' publish IDs, then this function returns\nincompleted pieces of the orders with computation as an Array of\n{@link IShoppingDeliveryPiece.ICreate } type.\n\nYou can utillize the result to make a huge {@link IShoppingDelivery delivery}\nfor integrated delivering, and also possible to make multiple deliveries for\nsplitted delivering." + "description": "Get list of incomplete pieces.\n\nGet list of {@link IShoppingDeliveryPiece incomplete pieces} of target\norders' {@link IShoppingOrderPublish.id}s.\n\nIf you specify target orders' publish IDs, then this function returns\nincompleted pieces of the orders with computation as an Array of\n{@link IShoppingDeliveryPiece.ICreate} type.\n\nYou can utillize the result to make a huge {@link IShoppingDelivery delivery}\nfor integrated delivering, and also possible to make multiple deliveries for\nsplitted delivering." } }, "/shoppings/sellers/deliveries/{deliveryId}/journeys": { @@ -5510,8 +5514,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged delivery's ", - "required": true + "required": true, + "description": " Belonged delivery's {@link IShoppingDelivery.id }" } ], "requestBody": { @@ -5538,7 +5542,7 @@ } }, "summary": "Create a new journey", - "description": "Create a new journey.\n\nCreate a new {@link IShoppingDeliveryJourney journey} of the\n{@link IShoppingDelivery delivery}.\n\nThis action may change the related {@link IShoppingOrderGood.state }.\nAlso, if the target journey's type is \"delivering\", whether the property\n{@link IShoppingDeliveryJourney.completed_at } is null or not affects to\nthe related goods' states. If the property is not null, the state becomes\n\"arrived\". Otherwise, the state becomes \"delivering\"." + "description": "Create a new journey.\n\nCreate a new {@link IShoppingDeliveryJourney journey} of the\n{@link IShoppingDelivery delivery}.\n\nThis action may change the related {@link IShoppingOrderGood.state}.\nAlso, if the target journey's type is \"delivering\", whether the property\n{@link IShoppingDeliveryJourney.completed_at} is null or not affects to\nthe related goods' states. If the property is not null, the state becomes\n\"arrived\". Otherwise, the state becomes \"delivering\"." } }, "/shoppings/sellers/deliveries/{deliveryId}/journeys/{id}/complete": { @@ -5554,8 +5558,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged delivery's ", - "required": true + "required": true, + "description": " Belonged delivery's {@link IShoppingDelivery.id }" }, { "name": "id", @@ -5564,8 +5568,8 @@ "type": "string", "format": "uuid" }, - "description": "Target journey's ", - "required": true + "required": true, + "description": " Target journey's {@link IShoppingDeliveryJourney.id}" } ], "requestBody": { @@ -5585,7 +5589,7 @@ } }, "summary": "Complete a journey", - "description": "Complete a journey.\n\nComplete a {@link IShoppingDeliveryJourney journey} of the\n{@link IShoppingDelivery delivery}. In other words, fills the\n{@link IShoppingDeliveryJourney.completed_at } property with current time.\n\nIf the target journey's type is \"delivering\", this action may change\nthe related {@link IShoppingOrderGood.state goods' states} to be \"arrived\"." + "description": "Complete a journey.\n\nComplete a {@link IShoppingDeliveryJourney journey} of the\n{@link IShoppingDelivery delivery}. In other words, fills the\n{@link IShoppingDeliveryJourney.completed_at} property with current time.\n\nIf the target journey's type is \"delivering\", this action may change\nthe related {@link IShoppingOrderGood.state goods' states} to be \"arrived\"." } }, "/shoppings/sellers/deliveries/{deliveryId}/journeys/{id}": { @@ -5601,8 +5605,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged delivery's ", - "required": true + "required": true, + "description": " Belonged delivery's {@link IShoppingDelivery.id }" }, { "name": "id", @@ -5611,8 +5615,8 @@ "type": "string", "format": "uuid" }, - "description": "Target journey's ", - "required": true + "required": true, + "description": " Target journey's {@link IShoppingDeliveryJourney.id}" } ], "responses": { @@ -5621,7 +5625,7 @@ } }, "summary": "Erase a journey", - "description": "Erase a journey.\n\nErase a {@link IShoppingDeliveryJourney journey} of the\n{@link IShoppingDelivery delivery}.\n\nIf erasing journey is the last one of the belonged delivery, this action\nmay change the related {@link IShoppingOrderGood.state }. By erasing the last\njourney, the state rolls back to the previous." + "description": "Erase a journey.\n\nErase a {@link IShoppingDeliveryJourney journey} of the\n{@link IShoppingDelivery delivery}.\n\nIf erasing journey is the last one of the belonged delivery, this action\nmay change the related {@link IShoppingOrderGood.state}. By erasing the last\njourney, the state rolls back to the previous." } }, "/shoppings/sellers/deliveries/{deliveryId}/shippers": { @@ -5637,8 +5641,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged delivery's ", - "required": true + "required": true, + "description": " Belonged delivery's {@link IShoppingDelivery.id }" } ], "requestBody": { @@ -5665,7 +5669,7 @@ } }, "summary": "Create a new shipper", - "description": "Create a new shipper.\n\nCreate a new {@link IShoppingDeliveryShipper shipper} of the\n{@link IShoppingDelivery delivery}.\n\nThis action does not affect to the related {@link IShoppingOrder orders} or\n{@link IShoppingOrderGood goods} like {@link IShoppingDeliveryJourney }\nor {@link IShoppingDeliveryPiece } case, but just informs to the\n{@link IShoppingCustomer customer}." + "description": "Create a new shipper.\n\nCreate a new {@link IShoppingDeliveryShipper shipper} of the\n{@link IShoppingDelivery delivery}.\n\nThis action does not affect to the related {@link IShoppingOrder orders} or\n{@link IShoppingOrderGood goods} like {@link IShoppingDeliveryJourney}\nor {@link IShoppingDeliveryPiece} case, but just informs to the\n{@link IShoppingCustomer customer}." } }, "/shoppings/sellers/coupons": { @@ -5698,7 +5702,7 @@ } }, "summary": "Create a new coupon", - "description": "Create a new coupon.\n\nCreate a new {@link IShoppingCoupon coupon} with given information.\n\nBy the way, if you are a {@link IShoppingSeller seller}, you have to\nadd include direction's {@link IShoppingCouponSellerCriteria } or\n{@link IShoppingCouponSaleCriteria } condition. This is because only\n{@link IShoppingAdministrator administrators} can create a coupon\nwhich can be used throughout the market. Seller must limit the usage\nrange by his/her {@link IShoppingSale sale(s)}.\n\nOf course, when adminstrator is planning to make a general coupon\nthat can be used throughout the market, the administrator must\nget agree from the sellers who are going to be affected." + "description": "Create a new coupon.\n\nCreate a new {@link IShoppingCoupon coupon} with given information.\n\nBy the way, if you are a {@link IShoppingSeller seller}, you have to\nadd include direction's {@link IShoppingCouponSellerCriteria} or\n{@link IShoppingCouponSaleCriteria} condition. This is because only\n{@link IShoppingAdministrator administrators} can create a coupon\nwhich can be used throughout the market. Seller must limit the usage\nrange by his/her {@link IShoppingSale sale(s)}.\n\nOf course, when adminstrator is planning to make a general coupon\nthat can be used throughout the market, the administrator must\nget agree from the sellers who are going to be affected." }, "patch": { "tags": [ @@ -5744,8 +5748,8 @@ "schema": { "type": "string" }, - "description": "Target coupon's ", - "required": true + "required": true, + "description": " Target coupon's {@link IShoppingCoupon.id}" } ], "responses": { @@ -5767,8 +5771,8 @@ "schema": { "type": "string" }, - "description": "Target coupon's ", - "required": true + "required": true, + "description": " Target coupon's {@link IShoppingCoupon.id}" } ], "responses": { @@ -5833,8 +5837,8 @@ "type": "string", "format": "uuid" }, - "description": "Target order's ", - "required": true + "required": true, + "description": " Target order's {@link IShoppingOrder.id}" } ], "responses": { @@ -5883,7 +5887,7 @@ } }, "summary": "Create a sale", - "description": "Create a sale.\n\n{@link IShoppingSeller Seller} creates a new {@link IShoppingSale } for\noperation.\n\nFor reference, sale has complicate hierarchical structure that composing\nwith {@link IShoppingSaleUnit units}, {@link IShoppingSaleUnitOption options}\nand {@link IShoppingSaleUnitStock stocks}. Therefore, I recommend you to\nread the {@link IShoppingSale } and related DTOs' documents before creating\na new sale.\n\nERD (Entity Relationship Diagram) and its description document also would\nbe helpful, too." + "description": "Create a sale.\n\n{@link IShoppingSeller Seller} creates a new {@link IShoppingSale} for\noperation.\n\nFor reference, sale has complicate hierarchical structure that composing\nwith {@link IShoppingSaleUnit units}, {@link IShoppingSaleUnitOption options}\nand {@link IShoppingSaleUnitStock stocks}. Therefore, I recommend you to\nread the {@link IShoppingSale} and related DTOs' documents before creating\na new sale.\n\nERD (Entity Relationship Diagram) and its description document also would\nbe helpful, too." }, "patch": { "tags": [ @@ -5914,7 +5918,7 @@ } }, "summary": "List up every summarized sales", - "description": "List up every summarized sales.\n\nList up every {@link IShoppingSale.ISummary summarized sales}.\n\nAs you can see, returned sales are summarized, not detailed. If you want\nto get the detailed information of a sale, use {@link at } function for\neach sale.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}s. Otherwise you're a\n{@link IShoppingCustomer customer}, you can see only the operating\nsales in the market. You can't see the unopened, closed, or suspended\nsales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSale.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingSale.IRequest.sort sort condition}." + "description": "List up every summarized sales.\n\nList up every {@link IShoppingSale.ISummary summarized sales}.\n\nAs you can see, returned sales are summarized, not detailed. If you want\nto get the detailed information of a sale, use {@link at} function for\neach sale.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}s. Otherwise you're a\n{@link IShoppingCustomer customer}, you can see only the operating\nsales in the market. You can't see the unopened, closed, or suspended\nsales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSale.IRequest.search search condition} in the request\nbody. Also, it is possible to customize sequence order of records by\nconfiguring {@link IShoppingSale.IRequest.sort sort condition}." } }, "/shoppings/sellers/sales/{id}": { @@ -5930,8 +5934,8 @@ "type": "string", "format": "uuid" }, - "description": "Target sale's ", - "required": true + "required": true, + "description": " Target sale's {@link IShoppingSale.id}" } ], "requestBody": { @@ -5972,8 +5976,8 @@ "type": "string", "format": "uuid" }, - "description": "Target sale's ", - "required": true + "required": true, + "description": " Target sale's {@link IShoppingSale.id}" } ], "responses": { @@ -6005,8 +6009,8 @@ "type": "string", "format": "uuid" }, - "description": "Target sale's ", - "required": true + "required": true, + "description": " Target sale's {@link IShoppingSale.id}" } ], "requestBody": { @@ -6042,8 +6046,8 @@ "type": "string", "format": "uuid" }, - "description": "Target sale's ", - "required": true + "required": true, + "description": " Target sale's {@link IShoppingSale.id}" } ], "responses": { @@ -6059,7 +6063,7 @@ } }, "summary": "Get replica of a sale", - "description": "Get replica of a sale.\n\nGet a {@link IShoppingSale.ICreate } typed info of the target sale for\nreplication.\n\nIt would be useful for creating a new replication\n{@link IShoppingSale sale} with similar innformatiopn." + "description": "Get replica of a sale.\n\nGet a {@link IShoppingSale.ICreate} typed info of the target sale for\nreplication.\n\nIt would be useful for creating a new replication\n{@link IShoppingSale sale} with similar innformatiopn." } }, "/shoppings/sellers/sales/{id}/pause": { @@ -6075,8 +6079,8 @@ "type": "string", "format": "uuid" }, - "description": "Target sale's ", - "required": true + "required": true, + "description": " Target sale's {@link IShoppingSale.id}" } ], "responses": { @@ -6085,7 +6089,7 @@ } }, "summary": "Pause a sale", - "description": "Pause a sale.\n\nPause a {@link IShoppingSale sale} from {@link open opened} state.\nTherefore, the sale can not be operated again until it be\n{@link restore restored}. By the way, {@link IShoppingCustomer customer}\nstill can sale from the {@link index } and {@link at } API endpints, but\n\"paused\" label would be attached.\n\nAlso, customer no more can put into the shopping cart, either.\nEven the sale already had been put into the shopping cart, the\n{@link IShoppingCartCommodity commodity} will not be listed on the\nshopping cart. Also, it is not possible to appling an\n{@link IShoppingOrder order} with the paused sale's commodity, either.\n\nBy the way, if the sale already had been applied to an order, the order\ncan be {@link IShoppingOrderPublish published} and\n{@link IShoppingSeller seller} must {@link IShoppingDelivery deliver} the\ngood to the customer." + "description": "Pause a sale.\n\nPause a {@link IShoppingSale sale} from {@link open opened} state.\nTherefore, the sale can not be operated again until it be\n{@link restore restored}. By the way, {@link IShoppingCustomer customer}\nstill can sale from the {@link index} and {@link at} API endpints, but\n\"paused\" label would be attached.\n\nAlso, customer no more can put into the shopping cart, either.\nEven the sale already had been put into the shopping cart, the\n{@link IShoppingCartCommodity commodity} will not be listed on the\nshopping cart. Also, it is not possible to appling an\n{@link IShoppingOrder order} with the paused sale's commodity, either.\n\nBy the way, if the sale already had been applied to an order, the order\ncan be {@link IShoppingOrderPublish published} and\n{@link IShoppingSeller seller} must {@link IShoppingDelivery deliver} the\ngood to the customer." } }, "/shoppings/sellers/sales/{id}/suspend": { @@ -6101,8 +6105,8 @@ "type": "string", "format": "uuid" }, - "description": "Target sale's ", - "required": true + "required": true, + "description": " Target sale's {@link IShoppingSale.id}" } ], "responses": { @@ -6111,7 +6115,7 @@ } }, "summary": "Suspend a sale", - "description": "Suspend a sale.\n\nSuspend a {@link IShoppingSale sale} from {@link open opened} state.\nTherefore, the sale can not be operated again until it be\n{@link restore restored} and {@link IShoppingCustomer customer} cannot\nsee the sale from the {@link index } and {@link at } API.\n\nAlso, customer no more can put into the shopping cart, either.\nEven the sale already had been put into the shopping cart, the\n{@link IShoppingCartCommodity commodity} will not be listed on the\nshopping cart. Also, it is not possible to appling an\n{@link IShoppingOrder order} with the suspended sale's commodity, either.\n\nBy the way, if the sale already had been applied to an order, the order\ncan be {@link IShoppingOrderPublish published} and\n{@link IShoppingSeller seller} must {@link IShoppingDelivery deliver} the\ngood to the customer." + "description": "Suspend a sale.\n\nSuspend a {@link IShoppingSale sale} from {@link open opened} state.\nTherefore, the sale can not be operated again until it be\n{@link restore restored} and {@link IShoppingCustomer customer} cannot\nsee the sale from the {@link index} and {@link at} API.\n\nAlso, customer no more can put into the shopping cart, either.\nEven the sale already had been put into the shopping cart, the\n{@link IShoppingCartCommodity commodity} will not be listed on the\nshopping cart. Also, it is not possible to appling an\n{@link IShoppingOrder order} with the suspended sale's commodity, either.\n\nBy the way, if the sale already had been applied to an order, the order\ncan be {@link IShoppingOrderPublish published} and\n{@link IShoppingSeller seller} must {@link IShoppingDelivery deliver} the\ngood to the customer." } }, "/shoppings/sellers/sales/{id}/restore": { @@ -6127,8 +6131,8 @@ "type": "string", "format": "uuid" }, - "description": "Target sale's ", - "required": true + "required": true, + "description": " Target sale's {@link IShoppingSale.id}" } ], "responses": { @@ -6152,8 +6156,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "questionId", @@ -6162,8 +6166,8 @@ "type": "string", "format": "uuid" }, - "description": "Target question's ", - "required": true + "required": true, + "description": " Target question's {@link IShoppingSaleQuestion.id }" } ], "requestBody": { @@ -6190,7 +6194,7 @@ } }, "summary": "Write an answer article", - "description": "Write an answer article.\n\nWrite a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry question article} written by a\n{@link IShoppingCustomer }.\n\nNote that, this is the formal answer that can be written only one per\na question article (but {@link update updatable}). Therefore, it needs to\nguide the {@link IShoppingSeller seller} to write it carefully.\n\nAlso, as seller can write {@link IShoppingSaleInquiryComment comments} to\nthe question article as many as he/she wants, it would be useful for\nadditional communication." + "description": "Write an answer article.\n\nWrite a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry question article} written by a\n{@link IShoppingCustomer}.\n\nNote that, this is the formal answer that can be written only one per\na question article (but {@link update updatable}). Therefore, it needs to\nguide the {@link IShoppingSeller seller} to write it carefully.\n\nAlso, as seller can write {@link IShoppingSaleInquiryComment comments} to\nthe question article as many as he/she wants, it would be useful for\nadditional communication." }, "put": { "tags": [ @@ -6204,8 +6208,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "questionId", @@ -6214,8 +6218,8 @@ "type": "string", "format": "uuid" }, - "description": "Target question's ", - "required": true + "required": true, + "description": " Target question's {@link IShoppingSaleQuestion.id }" } ], "requestBody": { @@ -6242,7 +6246,7 @@ } }, "summary": "Update an answer article", - "description": "Update an answer article.\n\nUpdate a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry question article} written by a\n{@link IShoppingCustomer }.\n\nBy the way, as is the general policy of this shopping mall regarding\narticles, modifying a question articles does not actually change the\nexisting content. Modified content is accumulated and recorded in the\nexisting article record as a new\n{@link IShoppingSaleInquiryAnswer.ISnapshot snapshot}. And this is made\npublic to everyone, including the {@link IShoppingCustomer customer} and the\n{@link IShoppingSeller seller}, and anyone who can view the article can\nalso view the entire editing histories.\n\nThis is to prevent customers or sellers from modifying their articles and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." + "description": "Update an answer article.\n\nUpdate a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry question article} written by a\n{@link IShoppingCustomer}.\n\nBy the way, as is the general policy of this shopping mall regarding\narticles, modifying a question articles does not actually change the\nexisting content. Modified content is accumulated and recorded in the\nexisting article record as a new\n{@link IShoppingSaleInquiryAnswer.ISnapshot snapshot}. And this is made\npublic to everyone, including the {@link IShoppingCustomer customer} and the\n{@link IShoppingSeller seller}, and anyone who can view the article can\nalso view the entire editing histories.\n\nThis is to prevent customers or sellers from modifying their articles and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." } }, "/shoppings/sellers/sales/{saleId}/questions/{inquiryId}/comments": { @@ -6258,8 +6262,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -6268,8 +6272,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged inquiry's ", - "required": true + "required": true, + "description": " Belonged inquiry's {@link IShoppingSaleInquiry.id }" } ], "requestBody": { @@ -6310,8 +6314,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -6320,8 +6324,8 @@ "type": "string", "format": "uuid" }, - "description": "Target inquiry's ", - "required": true + "required": true, + "description": " Target inquiry's {@link IShoppingSaleInquiry.id }" } ], "requestBody": { @@ -6364,8 +6368,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -6374,8 +6378,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged inquiry's ", - "required": true + "required": true, + "description": " Belonged inquiry's {@link IShoppingSaleInquiry.id }" }, { "name": "id", @@ -6384,8 +6388,8 @@ "type": "string", "format": "uuid" }, - "description": "Target inquiry comment's ", - "required": true + "required": true, + "description": " Target inquiry comment's {@link IShoppingSaleInquiryComment.id}" } ], "responses": { @@ -6415,8 +6419,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -6425,8 +6429,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged inquiry's ", - "required": true + "required": true, + "description": " Belonged inquiry's {@link IShoppingSaleInquiry.id }" }, { "name": "id", @@ -6435,8 +6439,8 @@ "type": "string", "format": "uuid" }, - "description": "Target inquiry comment's ", - "required": true + "required": true, + "description": " Target inquiry comment's {@link IShoppingSaleInquiryComment.id}" } ], "requestBody": { @@ -6479,8 +6483,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" } ], "requestBody": { @@ -6507,7 +6511,7 @@ } }, "summary": "List up every summarized questions", - "description": "List up every summarized questions.\n\nList up every {@link IShoppingSaleQuestion.ISummary summarized questions} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned questions are summarized, not detailed. If you want\nto get the detailed information of a question, use {@link adridges } function\nor {@link at } function for each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.ISummary.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.ISummary.secret } with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." + "description": "List up every summarized questions.\n\nList up every {@link IShoppingSaleQuestion.ISummary summarized questions} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned questions are summarized, not detailed. If you want\nto get the detailed information of a question, use {@link adridges} function\nor {@link at} function for each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.ISummary.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.ISummary.secret} with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." } }, "/shoppings/sellers/sales/{saleId}/questions/abridges": { @@ -6523,8 +6527,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" } ], "requestBody": { @@ -6551,7 +6555,7 @@ } }, "summary": "List up every abridged questions", - "description": "List up every abridged questions.\n\nList up every {@link IShoppingSaleQuestion.IAbridge abridged questions} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned questions are abridged, not detailed. If you want\nto get the detailed information of a question, use {@link at } function\nfor each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.IAridge.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.IAridge.secret } with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." + "description": "List up every abridged questions.\n\nList up every {@link IShoppingSaleQuestion.IAbridge abridged questions} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned questions are abridged, not detailed. If you want\nto get the detailed information of a question, use {@link at} function\nfor each article.\n\nAlso, returned question has {@link IShoppingSaleQuestion.IAridge.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\nAdditionally, returned question has another special property\n{@link IShoppingSaleQuestion.IAridge.secret} with masking to other\nprincple properties, and it means only related actors can {@link at read}\nthe question.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s questions. Otherwise,\nyou can access to every questions of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleQuestion.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleQuestion.IRequest.sort sort condition}." } }, "/shoppings/sellers/sales/{saleId}/questions/{id}": { @@ -6567,8 +6571,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "id", @@ -6577,8 +6581,8 @@ "type": "string", "format": "uuid" }, - "description": "Target question's ", - "required": true + "required": true, + "description": " Target question's {@link IShoppingSaleQuestion.id}" } ], "responses": { @@ -6594,7 +6598,7 @@ } }, "summary": "Get a question info", - "description": "Get a question info.\n\nGet a detailed {@link IShoppingSaleQuestion question} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s question. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nquestions of the sales except the {@link IShoppingSaleQuestion.secret }\nvalue is `false`." + "description": "Get a question info.\n\nGet a detailed {@link IShoppingSaleQuestion question} information of a\n{@link IShoppingSale sale}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s question. Otherwise\nyou are a {@link IShoppingCustomer customer}, you can access to every\nquestions of the sales except the {@link IShoppingSaleQuestion.secret}\nvalue is `false`." } }, "/shoppings/sellers/sales/{saleId}/reviews/{reviewId}/answer": { @@ -6610,8 +6614,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "reviewId", @@ -6620,8 +6624,8 @@ "type": "string", "format": "uuid" }, - "description": "Target review's ", - "required": true + "required": true, + "description": " Target review's {@link IShoppingSaleReview.id }" } ], "requestBody": { @@ -6648,7 +6652,7 @@ } }, "summary": "Write an answer article", - "description": "Write an answer article.\n\nWrite a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry review article} written by a\n{@link IShoppingCustomer }.\n\nNote that, this is the formal answer that can be written only one per\na review article (but {@link update updatable}). Therefore, it needs to\nguide the {@link IShoppingSeller seller} to write it carefully.\n\nAlso, as seller can write {@link IShoppingSaleInquiryComment comments} to\nthe review article as many as he/she wants, it would be useful for\nadditional communication." + "description": "Write an answer article.\n\nWrite a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry review article} written by a\n{@link IShoppingCustomer}.\n\nNote that, this is the formal answer that can be written only one per\na review article (but {@link update updatable}). Therefore, it needs to\nguide the {@link IShoppingSeller seller} to write it carefully.\n\nAlso, as seller can write {@link IShoppingSaleInquiryComment comments} to\nthe review article as many as he/she wants, it would be useful for\nadditional communication." }, "put": { "tags": [ @@ -6662,8 +6666,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "reviewId", @@ -6672,8 +6676,8 @@ "type": "string", "format": "uuid" }, - "description": "Target review's ", - "required": true + "required": true, + "description": " Target review's {@link IShoppingSaleReview.id }" } ], "requestBody": { @@ -6700,7 +6704,7 @@ } }, "summary": "Update an answer article", - "description": "Update an answer article.\n\nUpdate a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry review article} written by a\n{@link IShoppingCustomer }.\n\nBy the way, as is the general policy of this shopping mall regarding\narticles, modifying a review articles does not actually change the\nexisting content. Modified content is accumulated and recorded in the\nexisting article record as a new\n{@link IShoppingSaleInquiryAnswer.ISnapshot snapshot}. And this is made\npublic to everyone, including the {@link IShoppingCustomer customer} and the\n{@link IShoppingSeller seller}, and anyone who can view the article can\nalso view the entire editing histories.\n\nThis is to prevent customers or sellers from modifying their articles and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." + "description": "Update an answer article.\n\nUpdate a formal {@link IShoppingSaleInquiryAnswer answer article} to a\nspecific {@link IShoppingSaleInquiry review article} written by a\n{@link IShoppingCustomer}.\n\nBy the way, as is the general policy of this shopping mall regarding\narticles, modifying a review articles does not actually change the\nexisting content. Modified content is accumulated and recorded in the\nexisting article record as a new\n{@link IShoppingSaleInquiryAnswer.ISnapshot snapshot}. And this is made\npublic to everyone, including the {@link IShoppingCustomer customer} and the\n{@link IShoppingSeller seller}, and anyone who can view the article can\nalso view the entire editing histories.\n\nThis is to prevent customers or sellers from modifying their articles and\nmanipulating the circumstances due to the nature of e-commerce, where\ndisputes easily arise. That is, to preserve evidence." } }, "/shoppings/sellers/sales/{saleId}/reviews/{inquiryId}/comments": { @@ -6716,8 +6720,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -6726,8 +6730,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged inquiry's ", - "required": true + "required": true, + "description": " Belonged inquiry's {@link IShoppingSaleInquiry.id }" } ], "requestBody": { @@ -6768,8 +6772,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -6778,8 +6782,8 @@ "type": "string", "format": "uuid" }, - "description": "Target inquiry's ", - "required": true + "required": true, + "description": " Target inquiry's {@link IShoppingSaleInquiry.id }" } ], "requestBody": { @@ -6822,8 +6826,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -6832,8 +6836,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged inquiry's ", - "required": true + "required": true, + "description": " Belonged inquiry's {@link IShoppingSaleInquiry.id }" }, { "name": "id", @@ -6842,8 +6846,8 @@ "type": "string", "format": "uuid" }, - "description": "Target inquiry comment's ", - "required": true + "required": true, + "description": " Target inquiry comment's {@link IShoppingSaleInquiryComment.id}" } ], "responses": { @@ -6873,8 +6877,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "inquiryId", @@ -6883,8 +6887,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged inquiry's ", - "required": true + "required": true, + "description": " Belonged inquiry's {@link IShoppingSaleInquiry.id }" }, { "name": "id", @@ -6893,8 +6897,8 @@ "type": "string", "format": "uuid" }, - "description": "Target inquiry comment's ", - "required": true + "required": true, + "description": " Target inquiry comment's {@link IShoppingSaleInquiryComment.id}" } ], "requestBody": { @@ -6937,8 +6941,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" } ], "requestBody": { @@ -6965,7 +6969,7 @@ } }, "summary": "List up every summarized reviews", - "description": "List up every summarized reviews.\n\nList up every {@link IShoppingSaleReview.ISummary summarized reviews} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned reviews are summarized, not detailed. If you want\nto get the detailed information of a review, use {@link adridges } function\nor {@link at } function for each article.\n\nAlso, returned review has {@link IShoppingSaleReview.ISummary.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." + "description": "List up every summarized reviews.\n\nList up every {@link IShoppingSaleReview.ISummary summarized reviews} of a\n{@link IShoppingSale sale}.\n\nAs you can see, returned reviews are summarized, not detailed. If you want\nto get the detailed information of a review, use {@link adridges} function\nor {@link at} function for each article.\n\nAlso, returned review has {@link IShoppingSaleReview.ISummary.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." } }, "/shoppings/sellers/sales/{saleId}/reviews/abridges": { @@ -6981,8 +6985,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" } ], "requestBody": { @@ -7009,7 +7013,7 @@ } }, "summary": "List up every abridged reviews", - "description": "List up every abridged reviews.\n\nList up every {@link IShoppingSaleReview.IAbridge abridged reviews} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned reviews are abridged, not detailed. If you want\nto get the detailed information of a review, use {@link at } function\nfor each article.\n\nAlso, returned review has {@link IShoppingSaleReview.IAridge.answer }\nproperty which means the formal answer from the {@link IShoppingSeller }.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." + "description": "List up every abridged reviews.\n\nList up every {@link IShoppingSaleReview.IAbridge abridged reviews} of\na {@link IShoppingSale sale}.\n\nAs you can see, returned reviews are abridged, not detailed. If you want\nto get the detailed information of a review, use {@link at} function\nfor each article.\n\nAlso, returned review has {@link IShoppingSaleReview.IAridge.answer}\nproperty which means the formal answer from the {@link IShoppingSeller}.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s reviews. Otherwise,\nyou can access to every reviews of the sales.\n\nBy the way, if you want, you can limit the result by configuring\n{@link IShoppingSaleReview.IRequest.search search condition} in the\nrequest body. Also, it is possible to customize sequence order of records\nby configuring {@link IShoppingSaleReview.IRequest.sort sort condition}." } }, "/shoppings/sellers/sales/{saleId}/reviews/{id}": { @@ -7025,8 +7029,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "id", @@ -7035,8 +7039,8 @@ "type": "string", "format": "uuid" }, - "description": "Target review's ", - "required": true + "required": true, + "description": " Target review's {@link IShoppingSaleReview.id}" } ], "responses": { @@ -7068,8 +7072,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id}" }, { "name": "id", @@ -7078,8 +7082,8 @@ "type": "string", "format": "uuid" }, - "description": "Target snapshot's ", - "required": true + "required": true, + "description": " Target snapshot's {@link IShoppingSaleSnapshot.id }" } ], "responses": { @@ -7095,7 +7099,7 @@ } }, "summary": "Get replica of a snapshot", - "description": "Get replica of a snapshot.\n\nGet a {@link IShoppingSale.ICreate } typed info of the target\n{@link IShoppingSaleSnapshot snapshot} record for replication.\n\nIt would be useful for creating a new replication {@link IShoppingSale sale}\nfrom the old snapshot." + "description": "Get replica of a snapshot.\n\nGet a {@link IShoppingSale.ICreate} typed info of the target\n{@link IShoppingSaleSnapshot snapshot} record for replication.\n\nIt would be useful for creating a new replication {@link IShoppingSale sale}\nfrom the old snapshot." } }, "/shoppings/sellers/sales/{saleId}/snapshots": { @@ -7111,8 +7115,8 @@ "type": "string", "format": "uuid" }, - "description": "Target sale's ", - "required": true + "required": true, + "description": " Target sale's {@link IShoppingSale.id}" } ], "requestBody": { @@ -7139,7 +7143,7 @@ } }, "summary": "List up every snapshots", - "description": "List up every snapshots.\n\nWhenever {@link IShoppingSeller seller} updates a\n{@link IShoppingSale sale}, the sale record is not updated but a new\n{@link IShoppingSaleSnapshot snapshot} record is created to keep the\nintegrity of the sale history. This API function is for listing up\nsuch snapshot records.\n\nAlso, as you can see from the return type, returned snapshots are\nsummarized, not detailed. If you want to get the detailed information\nof a snapshot, use {@link at } or {@link flipo } function for each snapshot.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s snapshots. Otherwise,\nyou can access to every snapshots of the sales even though the sale has\nbeen closed or suspended." + "description": "List up every snapshots.\n\nWhenever {@link IShoppingSeller seller} updates a\n{@link IShoppingSale sale}, the sale record is not updated but a new\n{@link IShoppingSaleSnapshot snapshot} record is created to keep the\nintegrity of the sale history. This API function is for listing up\nsuch snapshot records.\n\nAlso, as you can see from the return type, returned snapshots are\nsummarized, not detailed. If you want to get the detailed information\nof a snapshot, use {@link at} or {@link flipo} function for each snapshot.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s snapshots. Otherwise,\nyou can access to every snapshots of the sales even though the sale has\nbeen closed or suspended." } }, "/shoppings/sellers/sales/{saleId}/snapshots/{id}": { @@ -7155,8 +7159,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id}" }, { "name": "id", @@ -7165,8 +7169,8 @@ "type": "string", "format": "uuid" }, - "description": "Target snapshot's ", - "required": true + "required": true, + "description": " Target snapshot's {@link IShoppingSaleSnapshot.id}" } ], "responses": { @@ -7182,7 +7186,7 @@ } }, "summary": "Get a snapshot info", - "description": "Get a snapshot info.\n\nGet a {@link IShoppingSaleSnapshot snapshot} with detailed information.\n\nAs you can see from the return type, returned snapshot does not contain\nthe {@link IShoppingSale sale} info. If you want to get the sale info,\nuse the {@link flip } function instead.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s snapshots. Otherwise,\nyou can access to every snapshots of the sales even though the sale has\nbeen closed or suspended." + "description": "Get a snapshot info.\n\nGet a {@link IShoppingSaleSnapshot snapshot} with detailed information.\n\nAs you can see from the return type, returned snapshot does not contain\nthe {@link IShoppingSale sale} info. If you want to get the sale info,\nuse the {@link flip} function instead.\n\nFor reference, if you're a {@link IShoppingSeller seller}, you can only\naccess to the your own {@link IShoppingSale sale}'s snapshots. Otherwise,\nyou can access to every snapshots of the sales even though the sale has\nbeen closed or suspended." } }, "/shoppings/sellers/sales/{saleId}/snapshots/{id}/flip": { @@ -7198,8 +7202,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id}" }, { "name": "id", @@ -7208,8 +7212,8 @@ "type": "string", "format": "uuid" }, - "description": "Target snapshot's ", - "required": true + "required": true, + "description": " Target snapshot's {@link IShoppingSaleSnapshot.id}" } ], "responses": { @@ -7241,8 +7245,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "unitId", @@ -7251,8 +7255,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged unit's ", - "required": true + "required": true, + "description": " Belonged unit's {@link IShoppingSaleUnit.id }" }, { "name": "stockId", @@ -7261,8 +7265,8 @@ "type": "string", "format": "uuid" }, - "description": "Target stock's ", - "required": true + "required": true, + "description": " Target stock's {@link IShoppingSaleUnitStock.id }" } ], "requestBody": { @@ -7289,7 +7293,7 @@ } }, "summary": "List up every supplements", - "description": "List up every supplements.\n\nList up every {@link IShoppingSaleUnitStockSupplement supplement histories}\nof a specific {@link IShoppingSaleUnitStock stock}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleUnitStockSupplement.IRequest.search search condition} in\nthe request body. Also, it is possible to customize sequence order of\nrecords by configuring {@link IShoppingSaleUnitStockSupplement.IRequest.sort }\nproperty." + "description": "List up every supplements.\n\nList up every {@link IShoppingSaleUnitStockSupplement supplement histories}\nof a specific {@link IShoppingSaleUnitStock stock}.\n\nIf you want, you can limit the result by configuring\n{@link IShoppingSaleUnitStockSupplement.IRequest.search search condition} in\nthe request body. Also, it is possible to customize sequence order of\nrecords by configuring {@link IShoppingSaleUnitStockSupplement.IRequest.sort}\nproperty." }, "post": { "tags": [ @@ -7303,8 +7307,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "unitId", @@ -7313,8 +7317,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged unit's ", - "required": true + "required": true, + "description": " Belonged unit's {@link IShoppingSaleUnit.id }" }, { "name": "stockId", @@ -7323,8 +7327,8 @@ "type": "string", "format": "uuid" }, - "description": "Target stock's ", - "required": true + "required": true, + "description": " Target stock's {@link IShoppingSaleUnitStock.id }" } ], "requestBody": { @@ -7367,8 +7371,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "unitId", @@ -7377,8 +7381,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged unit's ", - "required": true + "required": true, + "description": " Belonged unit's {@link IShoppingSaleUnit.id }" }, { "name": "stockId", @@ -7387,8 +7391,8 @@ "type": "string", "format": "uuid" }, - "description": "Target stock's ", - "required": true + "required": true, + "description": " Target stock's {@link IShoppingSaleUnitStock.id }" }, { "name": "id", @@ -7397,8 +7401,8 @@ "type": "string", "format": "uuid" }, - "description": "Target supplement's ", - "required": true + "required": true, + "description": " Target supplement's {@link IShoppingSaleUnitStockSupplement.id}" } ], "requestBody": { @@ -7432,8 +7436,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged sale's ", - "required": true + "required": true, + "description": " Belonged sale's {@link IShoppingSale.id }" }, { "name": "unitId", @@ -7442,8 +7446,8 @@ "type": "string", "format": "uuid" }, - "description": "Belonged unit's ", - "required": true + "required": true, + "description": " Belonged unit's {@link IShoppingSaleUnit.id }" }, { "name": "stockId", @@ -7452,8 +7456,8 @@ "type": "string", "format": "uuid" }, - "description": "Target stock's ", - "required": true + "required": true, + "description": " Target stock's {@link IShoppingSaleUnitStock.id }" }, { "name": "id", @@ -7462,8 +7466,8 @@ "type": "string", "format": "uuid" }, - "description": "Target supplement's ", - "required": true + "required": true, + "description": " Target supplement's {@link IShoppingSaleUnitStockSupplement.id}" } ], "responses": { @@ -7487,8 +7491,8 @@ "schema": { "type": "string" }, - "description": "Belonged channel's ", - "required": true + "required": true, + "description": " Belonged channel's {@link IShoppingChannel.code }" } ], "responses": { @@ -7522,8 +7526,8 @@ "schema": { "type": "string" }, - "description": "Belonged channel's ", - "required": true + "required": true, + "description": " Belonged channel's {@link IShoppingChannel.code }" }, { "name": "id", @@ -7532,8 +7536,8 @@ "type": "string", "format": "uuid" }, - "description": "Target category's ", - "required": true + "required": true, + "description": " Target category's {@link IShoppingChannelCategory.id}" } ], "responses": { @@ -7564,8 +7568,8 @@ "schema": { "type": "string" }, - "description": "Belonged channel's ", - "required": true + "required": true, + "description": " Belonged channel's {@link IShoppingChannel.code }" }, { "name": "id", @@ -7574,8 +7578,8 @@ "type": "string", "format": "uuid" }, - "description": "Target category's ", - "required": true + "required": true, + "description": " Target category's {@link IShoppingChannelCategory.id}" } ], "responses": { @@ -7673,8 +7677,8 @@ "type": "string", "format": "uuid" }, - "description": "Target channel's ", - "required": true + "required": true, + "description": " Target channel's {@link IShoppingChannel.id}" } ], "responses": { @@ -7705,8 +7709,8 @@ "schema": { "type": "string" }, - "description": "Target channel's ", - "required": true + "required": true, + "description": " Target channel's {@link IShoppingChannel.code}" } ], "responses": { @@ -7771,8 +7775,8 @@ "type": "string", "format": "uuid" }, - "description": "Target section's ", - "required": true + "required": true, + "description": " Target section's {@link IShoppingSection.id}" } ], "responses": { @@ -7803,8 +7807,8 @@ "schema": { "type": "string" }, - "description": "Target section's ", - "required": true + "required": true, + "description": " Target section's {@link IShoppingSection.code}" } ], "responses": { @@ -7864,19 +7868,25 @@ "type": "object", "properties": { "rss": { - "type": "number" + "type": "number", + "description": "Resident Set Size, is the amount of space occupied in the main memory device (that is a subset of the total allocated memory) for the\nprocess, including all C++ and JavaScript objects and code." }, "heapTotal": { - "type": "number" + "type": "number", + "title": "Refers to V8's memory usage", + "description": "Refers to V8's memory usage." }, "heapUsed": { - "type": "number" + "type": "number", + "title": "Refers to V8's memory usage", + "description": "Refers to V8's memory usage." }, "external": { "type": "number" }, "arrayBuffers": { - "type": "number" + "type": "number", + "description": "Refers to memory allocated for `ArrayBuffer`s and `SharedArrayBuffer`s, including all Node.js Buffers. This is also included\nin the external value. When Node.js is used as an embedded library, this value may be `0` because allocations for `ArrayBuffer`s\nmay not be tracked in that case." } }, "required": [ @@ -8217,7 +8227,7 @@ "id", "created_at" ], - "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.administrator },\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." + "description": "Invert information starting from administrator info.\n\nInstead of accessing to the administrator information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.administrator},\n`IShoppingAdministrator.IInvert` starts from the administrator information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." }, "IShoppingMember.IInvert": { "type": "object", @@ -8254,7 +8264,7 @@ "emails", "created_at" ], - "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" + "description": "Invert information of member.\n\nThis invert member information has been designed to be used for another\ninvert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}" }, "IShoppingMemberEmail": { "type": "object", @@ -8315,7 +8325,7 @@ "type": "string", "format": "uri", "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." + "description": "Connection address.\n\nSame with {@link window.location.href} of client." }, "referrer": { "oneOf": [ @@ -8328,7 +8338,7 @@ } ], "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." + "description": "Referrer address.\n\nSame with {@link window.document.referrer} of client." }, "ip": { "oneOf": [ @@ -8360,7 +8370,7 @@ "ip", "created_at" ], - "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert }\n- {@link IShoppingAdministrator.IInvert }" + "description": "Inverted customer informatino.\n\nThis inverted customer information has been designed to be used for\nanother invert informations of sellers and administrators like below.\n\n- {@link IShoppingSeller.IInvert}\n- {@link IShoppingAdministrator.IInvert}" }, "IShoppingChannel": { "type": "object", @@ -8426,7 +8436,7 @@ "application": { "type": "string", "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." + "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common." }, "uid": { "type": "string", @@ -8451,7 +8461,7 @@ "nickname", "data" ], - "description": "External user information.\n\n`IShoppingExternalUser` is an entity dsigned for when this system needs\nto connect with external services and welcome their users as\n{@link IShoppingCustomer customers} of this service.\n\nFor reference, customers who connect from an external service must have\nthis record, and the external service user is identified through the two\nattributes {@link application } and {@link uid }. If a customer connected\nfrom an external service completes\n{@link IShoppingCitizen real-name authentication} from this service, each\ntime the external service user reconnects to this service and issues a\nnew customer authentication token, real-name authentication begins with\ncompleted.\n\nAnd {@link password } is the password issued to the user by the external\nservice system (the so-called permanent user authentication token), and\nis never the actual user password. However, for customers who entered the\nsame application and uid as the current external system user, this is to\ndetermine whether to view this as a correct external system user or a\nviolation.\n\nIn addition, additional information received from external services can\nbe recorded in the data field in JSON format." + "description": "External user information.\n\n`IShoppingExternalUser` is an entity dsigned for when this system needs\nto connect with external services and welcome their users as\n{@link IShoppingCustomer customers} of this service.\n\nFor reference, customers who connect from an external service must have\nthis record, and the external service user is identified through the two\nattributes {@link application} and {@link uid}. If a customer connected\nfrom an external service completes\n{@link IShoppingCitizen real-name authentication} from this service, each\ntime the external service user reconnects to this service and issues a\nnew customer authentication token, real-name authentication begins with\ncompleted.\n\nAnd {@link password} is the password issued to the user by the external\nservice system (the so-called permanent user authentication token), and\nis never the actual user password. However, for customers who entered the\nsame application and uid as the current external system user, this is to\ndetermine whether to view this as a correct external system user or a\nviolation.\n\nIn addition, additional information received from external services can\nbe recorded in the data field in JSON format." }, "IShoppingCitizen": { "type": "object", @@ -8486,7 +8496,7 @@ "mobile", "name" ], - "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile } input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." + "description": "Citizen verification information.\n\n`IShoppingCitizen` is an entity that records the user's\n{@link name real name} and {@link mobile} input information.\n\nFor reference, in South Korea, real name authentication is required for\ne-commerce participants, so the name attribute is important. However, the\nsituation is different overseas, so in reality, mobile attributes are the\nmost important, and identification of individual person is also done based\non this mobile.\n\nOf course, real name and mobile phone authentication information are\nencrypted and stored." }, "IShoppingAdministrator.IJoin": { "type": "object", @@ -8526,6 +8536,13 @@ "$ref": "#/components/schemas/IShoppingCouponDiscount.IPercent" } ], + "discriminator": { + "propertyName": "unit", + "mapping": { + "amount": "#/components/schemas/IShoppingCouponDiscount.IAmount", + "percent": "#/components/schemas/IShoppingCouponDiscount.IPercent" + } + }, "title": "Discount information", "description": "Discount information." }, @@ -8553,7 +8570,17 @@ { "$ref": "#/components/schemas/IShoppingCouponFunnelCriteria.ICreate" } - ] + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "channel": "#/components/schemas/IShoppingCouponChannelCriteria.ICreate", + "section": "#/components/schemas/IShoppingCouponSectionCriteria.ICreate", + "seller": "#/components/schemas/IShoppingCouponSellerCriteria.ICreate", + "sale": "#/components/schemas/IShoppingCouponSaleCriteria.ICreate", + "funnel": "#/components/schemas/IShoppingCouponFunnelCriteria.ICreate" + } + } } }, "disposable_codes": { @@ -8643,12 +8670,12 @@ } ], "title": "Maximum amount available for discount", - "description": "Maximum amount available for discount.\n\nWhen this value is set, no further discount will be given no\nmatter how much you order. This property would be meaningful\nonly when the {@link multiplicative } is `true`." + "description": "Maximum amount available for discount.\n\nWhen this value is set, no further discount will be given no\nmatter how much you order. This property would be meaningful\nonly when the {@link multiplicative} is `true`." }, "multiplicative": { "type": "boolean", "title": "Multiplicative or not", - "description": "Multiplicative or not.\n\nIf this property is `true`, the discount value would be multiplied\nto the {@link IShoppingCartCommodity.volume } or\n{@link IShoppingOrderGood.volume } value. Also, in that case,\nthe {@link limit } property would be meaningful." + "description": "Multiplicative or not.\n\nIf this property is `true`, the discount value would be multiplied\nto the {@link IShoppingCartCommodity.volume} or\n{@link IShoppingOrderGood.volume} value. Also, in that case,\nthe {@link limit} property would be meaningful." } }, "required": [ @@ -8829,8 +8856,8 @@ "properties": { "channel_code": { "type": "string", - "title": "Target channel's {@link IShoppingChannel.code }", - "description": "Target channel's {@link IShoppingChannel.code }." + "title": "Target channel's {@link IShoppingChannel.code}", + "description": "Target channel's {@link IShoppingChannel.code}." }, "category_ids": { "oneOf": [ @@ -8845,8 +8872,8 @@ } } ], - "title": "Target categories' {@link IShoppingChannelCategory.id }s", - "description": "Target categories' {@link IShoppingChannelCategory.id }s." + "title": "Target categories' {@link IShoppingChannelCategory.id}s", + "description": "Target categories' {@link IShoppingChannelCategory.id}s." } }, "required": [ @@ -8864,8 +8891,8 @@ "type": "string" }, "minItems": 1, - "title": "List of target section's {@link IShoppingSection.code }s", - "description": "List of target section's {@link IShoppingSection.code }s." + "title": "List of target section's {@link IShoppingSection.code}s", + "description": "List of target section's {@link IShoppingSection.code}s." }, "type": { "const": "section" @@ -8898,8 +8925,8 @@ "format": "uuid" }, "minItems": 1, - "title": "List of target seller's {@link IShoppingSeller.id }s", - "description": "List of target seller's {@link IShoppingSeller.id }s." + "title": "List of target seller's {@link IShoppingSeller.id}s", + "description": "List of target seller's {@link IShoppingSeller.id}s." }, "type": { "const": "seller" @@ -8932,8 +8959,8 @@ "format": "uuid" }, "minItems": 1, - "title": "List of target sale's {@link IShoppingSale.id }s", - "description": "List of target sale's {@link IShoppingSale.id }s." + "title": "List of target sale's {@link IShoppingSale.id}s", + "description": "List of target sale's {@link IShoppingSale.id}s." }, "type": { "const": "sale" @@ -9143,7 +9170,7 @@ "closed_at", "created_at" ], - "description": "Discount coupon.\n\n`IShoppingCoupon` is an entity that symbolizes discount coupons at\na shopping mall.\n\nNote that, `IShoppingCoupon` only contains specification information\nabout discount coupons. Please keep in mind that this is a different\nconcept from {@link IShoppingCouponTicket }, which refers to the issuance\nof a discount coupon, or {@link IShoppingCouponTicketPayment }, which\nrefers to its payment.\n\nAdditionally, discount coupons are applied on an order-by-order basis,\nbut each has its own unique restrictions. For example, a coupon with\n{@link IShoppingCouponSellerCriteria } may or may not be used only for\n{@link IShoppingSale } of listings registered by the {@link IShoppingSeller }.\nAlso, there are restrictions such as\n{@link IShoppingCouponDiscount.threshold minimum amount restrictions} for\nusing discount coupons and\n{@link IShoppingCouponDiscount.limit maximum discount amount limits}.\n\nIn addition, you can set whether to issue discount coupons publicly or\ngive them only to people who know the specific issuing code. In addition,\nthere are restrictions such as issued discount coupons having an\n{@link IShoppingCouponRestriction.expired_at expiration date} or being\nissued only to customers who came in through a\n{@link IShoppingCouponFunnelCriteria specific funnel}.\n\nFor more information, please refer to the properties below and the\nsubsidiary entities described later." + "description": "Discount coupon.\n\n`IShoppingCoupon` is an entity that symbolizes discount coupons at\na shopping mall.\n\nNote that, `IShoppingCoupon` only contains specification information\nabout discount coupons. Please keep in mind that this is a different\nconcept from {@link IShoppingCouponTicket}, which refers to the issuance\nof a discount coupon, or {@link IShoppingCouponTicketPayment}, which\nrefers to its payment.\n\nAdditionally, discount coupons are applied on an order-by-order basis,\nbut each has its own unique restrictions. For example, a coupon with\n{@link IShoppingCouponSellerCriteria} may or may not be used only for\n{@link IShoppingSale} of listings registered by the {@link IShoppingSeller}.\nAlso, there are restrictions such as\n{@link IShoppingCouponDiscount.threshold minimum amount restrictions} for\nusing discount coupons and\n{@link IShoppingCouponDiscount.limit maximum discount amount limits}.\n\nIn addition, you can set whether to issue discount coupons publicly or\ngive them only to people who know the specific issuing code. In addition,\nthere are restrictions such as issued discount coupons having an\n{@link IShoppingCouponRestriction.expired_at expiration date} or being\nissued only to customers who came in through a\n{@link IShoppingCouponFunnelCriteria specific funnel}.\n\nFor more information, please refer to the properties below and the\nsubsidiary entities described later." }, "IShoppingSeller": { "type": "object", @@ -9241,7 +9268,17 @@ "$ref": "#/components/schemas/IShoppingCouponFunnelCriteria" } ], - "description": "Union type of the criteria.\n\n`IShoppingCouponCriteria` is an union typed structure that embodies the\nconditions for applying a {@link IShoppingCoupon discount coupon}. All\nof individual entities are imposing constraints on the reference unit of\na discount coupon were created by inheritig\n{@link IShoppingCouponCriteriaBase } type.\n\nAlso, individual entities can be specified by using the if condition on\nthe {@link type } property. For example, if the {@link type } value is\n`section`, {@link IShoppingCouponSectionCriteria } type would be specified,\nso that you can access to the target\n{@link IShoppingCouponSectionCriteria.section } directly. For reference,\nthis concept is called a descriminated union in TypeScript.\n\n```typescript\nconst union: IShoppingCouponCriteria;\nif (union.type === \"section\")\n union.section; // IShoppingCouponSectionCriteria.section\n```\n\nIn addition, constraints on reference units can be specified through the\n{@link direction } property to proceed as an inclusion condition or,\nconversely, as an exclusion condition. If the direction value is \"include\",\nthe coupon is applicable only to the reference object. Conversely, if the\ndirection value is \"exclude\", it is a coupon that cannot be applied to the\nreference object." + "discriminator": { + "propertyName": "type", + "mapping": { + "channel": "#/components/schemas/IShoppingCouponChannelCriteria", + "section": "#/components/schemas/IShoppingCouponSectionCriteria", + "seller": "#/components/schemas/IShoppingCouponSellerCriteria", + "sale": "#/components/schemas/IShoppingCouponSaleCriteria", + "funnel": "#/components/schemas/IShoppingCouponFunnelCriteria" + } + }, + "description": "Union type of the criteria.\n\n`IShoppingCouponCriteria` is an union typed structure that embodies the\nconditions for applying a {@link IShoppingCoupon discount coupon}. All\nof individual entities are imposing constraints on the reference unit of\na discount coupon were created by inheritig\n{@link IShoppingCouponCriteriaBase} type.\n\nAlso, individual entities can be specified by using the if condition on\nthe {@link type} property. For example, if the {@link type} value is\n`section`, {@link IShoppingCouponSectionCriteria} type would be specified,\nso that you can access to the target\n{@link IShoppingCouponSectionCriteria.section} directly. For reference,\nthis concept is called a descriminated union in TypeScript.\n\n```typescript\nconst union: IShoppingCouponCriteria;\nif (union.type === \"section\")\n union.section; // IShoppingCouponSectionCriteria.section\n```\n\nIn addition, constraints on reference units can be specified through the\n{@link direction} property to proceed as an inclusion condition or,\nconversely, as an exclusion condition. If the direction value is \"include\",\nthe coupon is applicable only to the reference object. Conversely, if the\ndirection value is \"exclude\", it is a coupon that cannot be applied to the\nreference object." }, "IShoppingCouponChannelCriteria": { "type": "object", @@ -9278,7 +9315,7 @@ "type", "direction" ], - "description": "Conditions for channels of discount coupons.\n\n`ishoppingcouponchannelcriteria` is a subtype entity of\n{@link IShoppingCouponCriteriaBase } and is used when setting conditions on\na specific {@link IShoppingChannel channel} or\n{@link IShoppingChannelCategory category} of that channel.\n\nIf the {@link direction } value is \"include\", the coupon can only be used\nfor the target channels (or categories). Conversely, if it is \"exclude\",\nit is a coupon that cannot be used." + "description": "Conditions for channels of discount coupons.\n\n`ishoppingcouponchannelcriteria` is a subtype entity of\n{@link IShoppingCouponCriteriaBase} and is used when setting conditions on\na specific {@link IShoppingChannel channel} or\n{@link IShoppingChannelCategory category} of that channel.\n\nIf the {@link direction} value is \"include\", the coupon can only be used\nfor the target channels (or categories). Conversely, if it is \"exclude\",\nit is a coupon that cannot be used." }, "IShoppingCouponChannelCriteria.IChannelTo": { "type": "object", @@ -9400,7 +9437,7 @@ "type", "direction" ], - "description": "Conditions for sections of discount coupons.\n\n`IShoppingCouponSectionCriteria` is a subtype entity of\n{@link IShoppingCouponCriteriaBase } and is used when setting conditions\nfor a specific {@link IShoppingSection section}.\n\nIf the {@link direction } value is \"include\", the coupon can only be used\nfor the target {@link sections }. Conversely, if it is \"exclude\", the\ncoupon cannot be used." + "description": "Conditions for sections of discount coupons.\n\n`IShoppingCouponSectionCriteria` is a subtype entity of\n{@link IShoppingCouponCriteriaBase} and is used when setting conditions\nfor a specific {@link IShoppingSection section}.\n\nIf the {@link direction} value is \"include\", the coupon can only be used\nfor the target {@link sections}. Conversely, if it is \"exclude\", the\ncoupon cannot be used." }, "IShoppingSection": { "type": "object", @@ -9471,7 +9508,7 @@ "type", "direction" ], - "description": "Conditions for sellers of discount coupons.\n\n`IShoppingCouponSellerCriteria` is a subtype entity of\n{@link IShoppingCouponCriteriaBase } and is used when setting conditions\nfor a specific {@link IShoppingSeller seller}.\n\nIf the {@link direction } value is \"include\", the coupon can only be used\nfor the target {@link sellers }. Conversely, if it is \"exclude\", the\ncoupon cannot be used." + "description": "Conditions for sellers of discount coupons.\n\n`IShoppingCouponSellerCriteria` is a subtype entity of\n{@link IShoppingCouponCriteriaBase} and is used when setting conditions\nfor a specific {@link IShoppingSeller seller}.\n\nIf the {@link direction} value is \"include\", the coupon can only be used\nfor the target {@link sellers}. Conversely, if it is \"exclude\", the\ncoupon cannot be used." }, "IShoppingCouponSaleCriteria": { "type": "object", @@ -9508,7 +9545,7 @@ "type", "direction" ], - "description": "Conditions for sales of discount coupons.\n\n`IShoppingCouponSaleCriteria` is a subtype entity of\n{@link IShoppingCouponCriteriaBase } and is used when setting conditions\nfor a specific {@link IShoppingSale sale}.\n\nIf the {@link direction } value is \"include\", the coupon can only be used\nfor the target {@link sales }. Conversely, if it is \"exclude\", the\ncoupon cannot be used." + "description": "Conditions for sales of discount coupons.\n\n`IShoppingCouponSaleCriteria` is a subtype entity of\n{@link IShoppingCouponCriteriaBase} and is used when setting conditions\nfor a specific {@link IShoppingSale sale}.\n\nIf the {@link direction} value is \"include\", the coupon can only be used\nfor the target {@link sales}. Conversely, if it is \"exclude\", the\ncoupon cannot be used." }, "IShoppingSale.ISummary": { "type": "object", @@ -9580,7 +9617,7 @@ "type": "string", "format": "date-time", "title": "Creation time of the record", - "description": "Creation time of the record.\n\nNote that, this property is different with {@link opened_at },\nwhich means the timepoint of the sale is opened." + "description": "Creation time of the record.\n\nNote that, this property is different with {@link opened_at},\nwhich means the timepoint of the sale is opened." }, "updated_at": { "type": "string", @@ -9705,7 +9742,7 @@ "id", "created_at" ], - "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member } -> {@link IShoppingMember.seller },\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." + "description": "Invert information starting from seller info.\n\nInstead of accessing to the seller information from the\n{@link IShoppingCustomer.member} -> {@link IShoppingMember.seller},\n`IShoppingSeller.IInvert` starts from the seller information\nand access to the customer, member and {@link IShoppingCitizen citizen}\ninformations inversely." }, "IShoppingSalePriceRange": { "type": "object", @@ -9816,7 +9853,7 @@ "extension", "url" ], - "description": "Attachment File.\n\nEvery attachment files that are managed in current system.\n\nFor reference, it is possible to omit one of file {@link name }\nor {@link extension } like `.gitignore` or `README` case, but not\npossible to omit both of them." + "description": "Attachment File.\n\nEvery attachment files that are managed in current system.\n\nFor reference, it is possible to omit one of file {@link name}\nor {@link extension} like `.gitignore` or `README` case, but not\npossible to omit both of them." }, "IShoppingSaleChannel": { "type": "object", @@ -9859,7 +9896,7 @@ "code", "name" ], - "description": "Target channel (and categories) of sale to sell.\n\n`IShoppingSaleChannel` is an entity that expresses through which\n{@link IShoppingChannel channel} a listing {@link IShoppingSale } is sold.\n\nAlso, if {@link IShoppingChannelCategory categories} are specified, it also\nmeans that the sale be sold. Otherwise, none of the categories of the channel\nbeing specified, it means that every categories of the channel is listing the\ntarget sale." + "description": "Target channel (and categories) of sale to sell.\n\n`IShoppingSaleChannel` is an entity that expresses through which\n{@link IShoppingChannel channel} a listing {@link IShoppingSale} is sold.\n\nAlso, if {@link IShoppingChannelCategory categories} are specified, it also\nmeans that the sale be sold. Otherwise, none of the categories of the channel\nbeing specified, it means that every categories of the channel is listing the\ntarget sale." }, "IShoppingSaleUnit.ISummary": { "type": "object", @@ -9939,7 +9976,7 @@ "type", "direction" ], - "description": "Limit the funnel of discount coupons.\n\n`ishoppingcouponfunnelcriteria` is a subtype entity of\n{@link IShoppingCouponCriteria }, and is used when you want to issue or\nexclude discount coupons only to {@link IShoppingCustomer customers} who\ncame from a specific path.\n\nAnd funnel restrictions are possible in 3 ways: The first is\n{@link IShoppingCustomer.referrer }, and by parsing\n{@link IShoppingCustomer.href }, which records the customer's access\naddress, restrictions can be made in units of specific URLs or variables." + "description": "Limit the funnel of discount coupons.\n\n`ishoppingcouponfunnelcriteria` is a subtype entity of\n{@link IShoppingCouponCriteria}, and is used when you want to issue or\nexclude discount coupons only to {@link IShoppingCustomer customers} who\ncame from a specific path.\n\nAnd funnel restrictions are possible in 3 ways: The first is\n{@link IShoppingCustomer.referrer}, and by parsing\n{@link IShoppingCustomer.href}, which records the customer's access\naddress, restrictions can be made in units of specific URLs or variables." }, "IShoppingCouponDiscount": { "oneOf": [ @@ -9950,7 +9987,14 @@ "$ref": "#/components/schemas/IShoppingCouponDiscount.IPercent" } ], - "description": "Discount information of the coupon.\n\n`IShoppingCouponDiscount` is a type representing the discount information\nof a {@link IShoppingCoupon }. Also, it is an union type that divided\nby the {@link unit } of the discount value, `amount` or `percent`." + "discriminator": { + "propertyName": "unit", + "mapping": { + "amount": "#/components/schemas/IShoppingCouponDiscount.IAmount", + "percent": "#/components/schemas/IShoppingCouponDiscount.IPercent" + } + }, + "description": "Discount information of the coupon.\n\n`IShoppingCouponDiscount` is a type representing the discount information\nof a {@link IShoppingCoupon}. Also, it is an union type that divided\nby the {@link unit} of the discount value, `amount` or `percent`." }, "IShoppingCoupon.IRequest": { "type": "object", @@ -10065,7 +10109,7 @@ "pages": { "type": "integer", "title": "Total pages", - "description": "Total pages.\n\nEqual to {@link records } / {@link limit } with ceiling." + "description": "Total pages.\n\nEqual to {@link records} / {@link limit} with ceiling." } }, "required": [ @@ -10811,7 +10855,7 @@ "price": { "$ref": "#/components/schemas/IShoppingOrderPrice", "title": "Price information including discounts", - "description": "Price information including discounts.\n\nFor reference, this price value has multiplied by the {@link volume } value.\nTherefore, even if {@link volume } value is equal to the target\n{@link IShoppingCartCommodity.volume }, this price value can be different\nwith the {@link IShoppingCartCommodity.price } value." + "description": "Price information including discounts.\n\nFor reference, this price value has multiplied by the {@link volume} value.\nTherefore, even if {@link volume} value is equal to the target\n{@link IShoppingCartCommodity.volume}, this price value can be different\nwith the {@link IShoppingCartCommodity.price} value." }, "publish": { "oneOf": [ @@ -10840,7 +10884,7 @@ "publish", "created_at" ], - "description": "Order application information.\n\n`IShoppingOrder` is an entity that embodies {@link IShoppingCustomer customer}'s\norder application information. However, please note that at this time, you are\nstill at the \"order application\" stage and not the \"order confirmation\" stage.\n\nAnd as soon as a customer applies for an order, all\n{@link IShoppingCartCommodity commodities} in the target shopping cart are\npromoted to {@link IShoppingOrderGood goods}, and those good records are created\nunder this `IShoppingOrder`.\n\nOf course, not all commodities in the target shopping cart become\n{@link IShoppingOrderGood }, but only those selected by the customer become the\n{@link IShoppingOrderGood }." + "description": "Order application information.\n\n`IShoppingOrder` is an entity that embodies {@link IShoppingCustomer customer}'s\norder application information. However, please note that at this time, you are\nstill at the \"order application\" stage and not the \"order confirmation\" stage.\n\nAnd as soon as a customer applies for an order, all\n{@link IShoppingCartCommodity commodities} in the target shopping cart are\npromoted to {@link IShoppingOrderGood goods}, and those good records are created\nunder this `IShoppingOrder`.\n\nOf course, not all commodities in the target shopping cart become\n{@link IShoppingOrderGood}, but only those selected by the customer become the\n{@link IShoppingOrderGood}." }, "IShoppingCustomer": { "type": "object", @@ -10901,7 +10945,7 @@ "type": "string", "format": "uri", "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." + "description": "Connection address.\n\nSame with {@link window.location.href} of client." }, "referrer": { "oneOf": [ @@ -10914,7 +10958,7 @@ } ], "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." + "description": "Referrer address.\n\nSame with {@link window.document.referrer} of client." }, "ip": { "oneOf": [ @@ -10949,7 +10993,7 @@ "ip", "created_at" ], - "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen }, {@link IShoppingMember }, and\n{@link IShoppingExternalUser }. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." + "description": "Customer information, but not a person but a connection basis.\n\n`IShoppingCustomer` is an entity that literally embodies the information of\nthose who participated in the market as customers. By the way, the\n`IShoppingCustomer` does not mean a person, but a connection basis. Therefore,\neven if the same person connects to the shopping mall multiple, multiple\nrecords are created in `IShoppingCustomer`.\n\nThe first purpose of this is to track the customer's inflow path in detail,\nand it is for cases where the same person enters as a non-member,\n{@link IShoppingCartCommodity puts items in the shopping cart} in advance,\nand only authenticates their {@link IShoppingCitizen real name} or\nregisters/logs in at the moment of {@link IShoppingOrderPublish payment}.\nIt is the second. Lastly, it is to accurately track the activities that\na person performs at the shopping mall in various ways like below.\n\n- Same person comes from an {@link IShoppingExternalUser external service}\n- Same person creates multiple accounts\n- Same person makes a {@link IShoppingOrderPublish purchase} as a non-member with only {@link IShoppingCitizen real name authentication}\n- Same person acts both {@link IShoppingSeller seller} and {@link IShoppingAdministrator admin} at the same time\n\nTherefore, `IShoppingCustomer` can have multiple records with the same\n{@link IShoppingCitizen}, {@link IShoppingMember}, and\n{@link IShoppingExternalUser}. Additionally, if a customer signs up for\nmembership after verifying their real name or signs up for our service after\nbeing a user of an external service, all related records are changed at once.\nTherefore, identification and tracking of customers can be done very\nsystematically." }, "IShoppingMember": { "type": "object", @@ -11025,7 +11069,7 @@ "emails", "created_at" ], - "description": "Member Account.\n\n`IShoppingMember` is an entity that symbolizes the case when a\n{@link IShoppingCustomer } signs up as a member of this shopping mall\nsystem.\n\nIf a `IShoppingMember` has seller or administrator property. it means that\nthe {@link IShoppingCustomer } has acting as a {@link IShoppingSeller seller}\nor {@link IShoppingAdministrator administrator} at the same time." + "description": "Member Account.\n\n`IShoppingMember` is an entity that symbolizes the case when a\n{@link IShoppingCustomer} signs up as a member of this shopping mall\nsystem.\n\nIf a `IShoppingMember` has seller or administrator property. it means that\nthe {@link IShoppingCustomer} has acting as a {@link IShoppingSeller seller}\nor {@link IShoppingAdministrator administrator} at the same time." }, "IShoppingOrderGood": { "type": "object", @@ -11044,7 +11088,7 @@ "volume": { "type": "integer", "title": "Volume of the good", - "description": "Volume of the good.\n\nThe value multiplied to {@link IShoppingCartCommodityStock.quantity }.\nIt's purpose is exactly same with {@link IShoppingCartCommodity.volume },\nbut rewritten because the {@link IShoppingCartCommodity } records are reusable\nuntil payment." + "description": "Volume of the good.\n\nThe value multiplied to {@link IShoppingCartCommodityStock.quantity}.\nIt's purpose is exactly same with {@link IShoppingCartCommodity.volume},\nbut rewritten because the {@link IShoppingCartCommodity} records are reusable\nuntil payment." }, "price": { "$ref": "#/components/schemas/IShoppingOrderPrice.ISummary", @@ -11103,7 +11147,7 @@ "state", "confirmed_at" ], - "description": "Information about the individual goods that make up your order.\n\n`IShoppingOrderGood` is an entity that represents each good ordered by a\n{@link IShoppingCustomer customer}, and the record is created in the process\nof upgrading the product {@link IShoppingCartCommodity commodity} in the\nshopping cart to a good due to the customer's {@link IShoppingOrder order}\nrequest.\n\nAnd `IShoppingOrderGood`, like {@link IShoppingCartCommodity }, is a concept\nthat corresponds to the listing {@link IShoppingSaleSnapshot sale snapshot}.\n\nFor reference, `IShoppingOrderGood` also contains {@link volume } information\nseparately from the belonging {@link IShoppingCartCommodity.volume }. This is\nbecause there are some cases where you put 3 books in your shopping cart and\nthen change them to 4 during the actual order application process. This is to\nincrease the reusability of the shopping cart by changing the volume attribute\nof the current entity rather than directly changing the commodity information.\n\nIn addition, `IShoppingOrderGood` becomes the most basic unit for the post-order\nprocess, that is, after service (A/S). For example, after receiving a\ncustomer's product, confirming the order is recorded in the {@link confirmed_at }\nattribute. Additionally, `IShoppingOrderGood` is the unit in which customers\nissues or request exchanges or refunds for ordered products." + "description": "Information about the individual goods that make up your order.\n\n`IShoppingOrderGood` is an entity that represents each good ordered by a\n{@link IShoppingCustomer customer}, and the record is created in the process\nof upgrading the product {@link IShoppingCartCommodity commodity} in the\nshopping cart to a good due to the customer's {@link IShoppingOrder order}\nrequest.\n\nAnd `IShoppingOrderGood`, like {@link IShoppingCartCommodity}, is a concept\nthat corresponds to the listing {@link IShoppingSaleSnapshot sale snapshot}.\n\nFor reference, `IShoppingOrderGood` also contains {@link volume} information\nseparately from the belonging {@link IShoppingCartCommodity.volume}. This is\nbecause there are some cases where you put 3 books in your shopping cart and\nthen change them to 4 during the actual order application process. This is to\nincrease the reusability of the shopping cart by changing the volume attribute\nof the current entity rather than directly changing the commodity information.\n\nIn addition, `IShoppingOrderGood` becomes the most basic unit for the post-order\nprocess, that is, after service (A/S). For example, after receiving a\ncustomer's product, confirming the order is recorded in the {@link confirmed_at}\nattribute. Additionally, `IShoppingOrderGood` is the unit in which customers\nissues or request exchanges or refunds for ordered products." }, "IShoppingCartCommodity": { "type": "object", @@ -11133,12 +11177,12 @@ "type": "integer", "minimum": 1, "title": "Volume of the commodity to purchase", - "description": "Volume of the commodity to purchase.\n\nA value indicating how many sets would be multiplied to the children\n{@link IShoppingSaleUnitStock.IInvert.quantity } values." + "description": "Volume of the commodity to purchase.\n\nA value indicating how many sets would be multiplied to the children\n{@link IShoppingSaleUnitStock.IInvert.quantity} values." }, "price": { "$ref": "#/components/schemas/IShoppingPrice", "title": "Price of the commodity", - "description": "Price of the commodity.\n\nFor reference, this price value has not been multiplied by the\n{@link volume } value. It just sumed up the prices of the children\n{@link IShoppingSaleUnitStock.IInvert.price } values." + "description": "Price of the commodity.\n\nFor reference, this price value has not been multiplied by the\n{@link volume} value. It just sumed up the prices of the children\n{@link IShoppingSaleUnitStock.IInvert.price} values." }, "created_at": { "type": "string", @@ -11156,7 +11200,7 @@ "price", "created_at" ], - "description": "Item in a shopping cart.\n\n`IShoppingCartCommodity` is an entity that represents a\n{@link IShoppingSaleSnapshot snapshot} of the items that\n{@link IShoppingCustomer customer} has placed into his shopping cart with a\n{@link IShoppingOrder purchase} in mind. And if the customer continues this\ninto an actual order in the future, `IShoppingCartCommodity` be changed to\n{@link IShoppingOrderGood }.\n\nAnd while adding a sale snapshot to the shopping cart, the customer inevitably\nselects specific {@link IShoppingSaleUnit units} and\n{@link IShoppingSaleUnitStock final stocks} within the listing snapshot.\nInformation about these units and stocks is recorded in the subsidiary entity\n{@link IShoppingCartCommodityStock }. Also, there is an attribute {@link volume }\nthat indicates how many sets of snapshots of the target commodity will be\npurchased. This \"volume\" is a value that will be multiplied by\n{@link IShoppingSaleUnitStock.IInvert.quantity }, the quantity for each\ncomponent." + "description": "Item in a shopping cart.\n\n`IShoppingCartCommodity` is an entity that represents a\n{@link IShoppingSaleSnapshot snapshot} of the items that\n{@link IShoppingCustomer customer} has placed into his shopping cart with a\n{@link IShoppingOrder purchase} in mind. And if the customer continues this\ninto an actual order in the future, `IShoppingCartCommodity` be changed to\n{@link IShoppingOrderGood}.\n\nAnd while adding a sale snapshot to the shopping cart, the customer inevitably\nselects specific {@link IShoppingSaleUnit units} and\n{@link IShoppingSaleUnitStock final stocks} within the listing snapshot.\nInformation about these units and stocks is recorded in the subsidiary entity\n{@link IShoppingCartCommodityStock}. Also, there is an attribute {@link volume}\nthat indicates how many sets of snapshots of the target commodity will be\npurchased. This \"volume\" is a value that will be multiplied by\n{@link IShoppingSaleUnitStock.IInvert.quantity}, the quantity for each\ncomponent." }, "IShoppingSaleSnapshot.IInvert": { "type": "object", @@ -11223,7 +11267,7 @@ "type": "string", "format": "date-time", "title": "Creation time of the record", - "description": "Creation time of the record.\n\nNote that, this property is different with {@link opened_at },\nwhich means the timepoint of the sale is opened." + "description": "Creation time of the record.\n\nNote that, this property is different with {@link opened_at},\nwhich means the timepoint of the sale is opened." }, "updated_at": { "type": "string", @@ -11301,7 +11345,7 @@ "opened_at", "closed_at" ], - "description": "Invert information of the sale snapshot, in the perspective of commodity.\n\n`IShoppingSaleSnapshot.IInvert` is a structure used to represent a\nsnapshot in the perspective of a {@link IShoppingCommodity }, corresponding\nto an {@link IShoppingCartCommodityStock } entity.\n\nTherefore, `IShoppingSaleSnapshot.IInvert` does not contain every\n{@link IShoppingSaleUnit units} and {@link IShoppingSaleUnitStock stocks}\nof the snapshot records, but only some of the records which are put\ninto the {@link IShoppingCartCommodity shopping cart}." + "description": "Invert information of the sale snapshot, in the perspective of commodity.\n\n`IShoppingSaleSnapshot.IInvert` is a structure used to represent a\nsnapshot in the perspective of a {@link IShoppingCommodity}, corresponding\nto an {@link IShoppingCartCommodityStock} entity.\n\nTherefore, `IShoppingSaleSnapshot.IInvert` does not contain every\n{@link IShoppingSaleUnit units} and {@link IShoppingSaleUnitStock stocks}\nof the snapshot records, but only some of the records which are put\ninto the {@link IShoppingCartCommodity shopping cart}." }, "IShoppingSaleUnit.IInvert": { "type": "object", @@ -11703,7 +11747,7 @@ "ticket", "created_at" ], - "description": "Discount coupon ticket payment details.\n\n`IShoppingCouponTicketPayment` is an entity that embodies the payment\ninformation for the {@link IShoppingOrder order} of\n{@link IShoppingCouponTicket }, and is used when a consumer uses the\ndiscount coupon ticket he or she was issued to order and has the payment\namount deducted.\n\nAnd since {@link IShoppingOrder } itself is not an entity used in\nsituations where an order is completed, but rather an entity designed to\nexpress an order request, the creation of this\n`IShoppingCouponTicketPayment` record does not actually mean that the\nattached ticket disappears. Until the {@link IShoppingCustomer customer}\n{@link IShoppingOrderPublish.paid_at completes the payment} and confirms\nthe order, the ticket can be understood as a kind of deposit.\n\nAdditionally, this record can be deleted by the customer reversing the\npayment of the ticket, but it can also be deleted when the attribution\norder itself is cancelled." + "description": "Discount coupon ticket payment details.\n\n`IShoppingCouponTicketPayment` is an entity that embodies the payment\ninformation for the {@link IShoppingOrder order} of\n{@link IShoppingCouponTicket}, and is used when a consumer uses the\ndiscount coupon ticket he or she was issued to order and has the payment\namount deducted.\n\nAnd since {@link IShoppingOrder} itself is not an entity used in\nsituations where an order is completed, but rather an entity designed to\nexpress an order request, the creation of this\n`IShoppingCouponTicketPayment` record does not actually mean that the\nattached ticket disappears. Until the {@link IShoppingCustomer customer}\n{@link IShoppingOrderPublish.paid_at completes the payment} and confirms\nthe order, the ticket can be understood as a kind of deposit.\n\nAdditionally, this record can be deleted by the customer reversing the\npayment of the ticket, but it can also be deleted when the attribution\norder itself is cancelled." }, "IShoppingCouponTicket": { "type": "object", @@ -11822,7 +11866,7 @@ "cancelled_at", "address" ], - "description": "Order completion and payment information.\n\n`IShoppingOrderPublish` is an entity that embodies the series of processes\nin which a {@link IShoppingCustomer customer} pays for his or her\n{@link IShoppingOrder order}, thereby completing the order. And only after\nthe order is {@link paid_at completed}, can the {@link IShoppingSeller seller}\nrecognize that the customer has purchased his product.\n\nBy the way, please note that just because the `IShoppingOrderPublish` record\nexists, it does not mean that the payment has been completed. Of course, with\n\"credit cards\" and \"Google Pay\", payment application and payment occur at the\nsame time. However, there are some cases where payment is made after the\npayment application, such as \"bank transfer\" or \"virtual account payment\".\nTherefore, to see the completion of payment, be sure to check the\n{@link paid_at } property.\n\nIn addition, even after payment has been made, there may be cases where it is\nsuddenly cancelled, so please be aware of this as well." + "description": "Order completion and payment information.\n\n`IShoppingOrderPublish` is an entity that embodies the series of processes\nin which a {@link IShoppingCustomer customer} pays for his or her\n{@link IShoppingOrder order}, thereby completing the order. And only after\nthe order is {@link paid_at completed}, can the {@link IShoppingSeller seller}\nrecognize that the customer has purchased his product.\n\nBy the way, please note that just because the `IShoppingOrderPublish` record\nexists, it does not mean that the payment has been completed. Of course, with\n\"credit cards\" and \"Google Pay\", payment application and payment occur at the\nsame time. However, there are some cases where payment is made after the\npayment application, such as \"bank transfer\" or \"virtual account payment\".\nTherefore, to see the completion of payment, be sure to check the\n{@link paid_at} property.\n\nIn addition, even after payment has been made, there may be cases where it is\nsuddenly cancelled, so please be aware of this as well." }, "IShoppingDelivery": { "type": "object", @@ -11884,7 +11928,7 @@ "state", "created_at" ], - "description": "Delivery information.\n\nWhen delivering {@link IShoppingOrderGood goods} to\n{@link IShoppingCustomer customer}, {@link IShoppingSeller seller} can deliver\nmultiple {@link IShoppingSaleUnitStock stocks}, goods at once. Also, it is\npossible to deliver a stock or good in multiple times due to physical restriction\nlike volume or weight problem.\n\nAs you can see from above, the relationship between delivery with\n{@link IShoppingOrder order} (or {@link IShoppingOrderGood good}) is not 1: 1 or\nN: 1, but M: N. Entity `IShoppingDelivery` has been designed to represent such\nrelationship, by referencing target stocks or goods through subsidiary entity\n{@link IShoppingDeliveryPiece }.\n\nAlso, delivery does not end with only one step. It has multiple processes like\nmanufacturing, planning, shipping and delivering. Those steps are represented by\nanother subsidiary entity {@link IShoppingDeliveryJourney }." + "description": "Delivery information.\n\nWhen delivering {@link IShoppingOrderGood goods} to\n{@link IShoppingCustomer customer}, {@link IShoppingSeller seller} can deliver\nmultiple {@link IShoppingSaleUnitStock stocks}, goods at once. Also, it is\npossible to deliver a stock or good in multiple times due to physical restriction\nlike volume or weight problem.\n\nAs you can see from above, the relationship between delivery with\n{@link IShoppingOrder order} (or {@link IShoppingOrderGood good}) is not 1: 1 or\nN: 1, but M: N. Entity `IShoppingDelivery` has been designed to represent such\nrelationship, by referencing target stocks or goods through subsidiary entity\n{@link IShoppingDeliveryPiece}.\n\nAlso, delivery does not end with only one step. It has multiple processes like\nmanufacturing, planning, shipping and delivering. Those steps are represented by\nanother subsidiary entity {@link IShoppingDeliveryJourney}." }, "IShoppingDeliveryJourney": { "type": "object", @@ -11980,7 +12024,7 @@ "started_at", "completed_at" ], - "description": "Journey of delivery.\n\n`IShoppingDeliveryJourney` is a subsidiary entity of {@link IShoppingDelivery },\ndescribing each journey of the delivery. For reference, the word journey\nmeans each step of the delivery process, such as preparing, shipping, and\ndelivering {@link IShoppingOrderGood goods} to the\n{@link IShoppingCustomer customer}." + "description": "Journey of delivery.\n\n`IShoppingDeliveryJourney` is a subsidiary entity of {@link IShoppingDelivery},\ndescribing each journey of the delivery. For reference, the word journey\nmeans each step of the delivery process, such as preparing, shipping, and\ndelivering {@link IShoppingOrderGood goods} to the\n{@link IShoppingCustomer customer}." }, "IShoppingDeliveryJourney.Type": { "oneOf": [ @@ -12010,20 +12054,20 @@ "publish_id": { "type": "string", "format": "uuid", - "title": "Target order's {@link IShoppingOrderPublish.id }", - "description": "Target order's {@link IShoppingOrderPublish.id }." + "title": "Target order's {@link IShoppingOrderPublish.id}", + "description": "Target order's {@link IShoppingOrderPublish.id}." }, "good_id": { "type": "string", "format": "uuid", - "title": "Target good's {@link IShoppingOrderGood.id }", - "description": "Target good's {@link IShoppingOrderGood.id }." + "title": "Target good's {@link IShoppingOrderGood.id}", + "description": "Target good's {@link IShoppingOrderGood.id}." }, "stock_id": { "type": "string", "format": "uuid", - "title": "Target stock's {@link IShoppingSaleUnitStock.id }", - "description": "Target stock's {@link IShoppingSaleUnitStock.id }." + "title": "Target stock's {@link IShoppingSaleUnitStock.id}", + "description": "Target stock's {@link IShoppingSaleUnitStock.id}." }, "quantity": { "type": "number", @@ -12039,7 +12083,7 @@ "stock_id", "quantity" ], - "description": "Which stocks are delivered.\n\n`IShoppingDeliveryPiece` is a subsidiary entity of {@link IShoppingDelivery },\ndescribing how much quantity is delivered for each\n{@link IShoppingSaleUnitStock stock} in {@link IShoppingOrder }.\n\nFor reference, as an order can be delivered in multiple times due to volume\nor weight problem, it is possible to have multiple `IShoppingDeliveryPiece`\nrecords for a single stock." + "description": "Which stocks are delivered.\n\n`IShoppingDeliveryPiece` is a subsidiary entity of {@link IShoppingDelivery},\ndescribing how much quantity is delivered for each\n{@link IShoppingSaleUnitStock stock} in {@link IShoppingOrder}.\n\nFor reference, as an order can be delivered in multiple times due to volume\nor weight problem, it is possible to have multiple `IShoppingDeliveryPiece`\nrecords for a single stock." }, "IShoppingDeliveryShipper": { "type": "object", @@ -12401,7 +12445,7 @@ "type": "string", "format": "date-time", "title": "Creation time of the record", - "description": "Creation time of the record.\n\nNote that, this property is different with {@link opened_at },\nwhich means the timepoint of the sale is opened." + "description": "Creation time of the record.\n\nNote that, this property is different with {@link opened_at},\nwhich means the timepoint of the sale is opened." }, "updated_at": { "type": "string", @@ -12479,7 +12523,7 @@ "opened_at", "closed_at" ], - "description": "Seller sales products.\n\n`IShoppingSale` is an entity that embodies \"product sales\" (sales)\ninformation registered by the {@link ISoppingSeller seller}. And the main\ninformation of the sale is recorded in the sub {@link IShoppingSaleSnapshot },\nnot in the main `IShoppingSale`. When a seller changes a previously registered\nitem, the existing `IShoppingSale` record is not changed, but a new\n{@link IShoppingSaleSnapshot snapshot} record be created.\n\nThis is to preserve the {@link IShoppingCustomer customer}'s\n{@link IShoppingOrder purchase history} flawlessly after the customer\npurchases a specific item, even if the seller changes the components or\nprice of the item. It is also intended to support sellers in so-called A/B\ntesting, which involves changing components or prices and measuring the\nperformance in each case." + "description": "Seller sales products.\n\n`IShoppingSale` is an entity that embodies \"product sales\" (sales)\ninformation registered by the {@link ISoppingSeller seller}. And the main\ninformation of the sale is recorded in the sub {@link IShoppingSaleSnapshot},\nnot in the main `IShoppingSale`. When a seller changes a previously registered\nitem, the existing `IShoppingSale` record is not changed, but a new\n{@link IShoppingSaleSnapshot snapshot} record be created.\n\nThis is to preserve the {@link IShoppingCustomer customer}'s\n{@link IShoppingOrder purchase history} flawlessly after the customer\npurchases a specific item, even if the seller changes the components or\nprice of the item. It is also intended to support sellers in so-called A/B\ntesting, which involves changing components or prices and measuring the\nperformance in each case." }, "IShoppingSaleContent": { "type": "object", @@ -12530,7 +12574,7 @@ "files", "thumbnails" ], - "description": "Content information of sale snapshot.\n\n`IShoppingSaleContent` is an entity embodies the description contents\nof {@link IShoppingSale }." + "description": "Content information of sale snapshot.\n\n`IShoppingSaleContent` is an entity embodies the description contents\nof {@link IShoppingSale}." }, "IShoppingSaleContent.Type": { "oneOf": [ @@ -12595,7 +12639,7 @@ "primary", "required" ], - "description": "Product composition information handled in the sale.\n\n`IShoppingSaleUnit` is an entity that embodies the \"individual product\"\ninformation handled in the {@link IShoppingSale sale}.\n\nFor reference, the reason why `IShoppingSaleUnit` is separated from\n{@link IShoppingSaleSnapshot } by an algebraic relationship of 1: N is because\nthere are some cases where multiple products are sold in one listing. This is\nthe case with so-called \"bundled products\".\n\n- Bundle from regular product (Mackbook Set)\n - Main Body\n - Keyboard\n - Mouse\n - Apple Care (Free A/S Voucher)\n\nAnd again, `IShoppingSaleUnit` does not in itself refer to the\n{@link IShoppingSaleUnitStock final stock} that the\n{@link IShoppingCustomer customer} will {@link IShoppingOrder purchase}.\nThe final stock can be found only after selecting all given\n{@link IShoppingSaleUnitOption options} and their\n{@link IShoppingSaleUnitOptionCandidate candidate values}.\n\nFor example, even if you buy a Macbook, the final stocks are determined only\nafter selecting all the options (CPU / RAM / SSD), etc." + "description": "Product composition information handled in the sale.\n\n`IShoppingSaleUnit` is an entity that embodies the \"individual product\"\ninformation handled in the {@link IShoppingSale sale}.\n\nFor reference, the reason why `IShoppingSaleUnit` is separated from\n{@link IShoppingSaleSnapshot} by an algebraic relationship of 1: N is because\nthere are some cases where multiple products are sold in one listing. This is\nthe case with so-called \"bundled products\".\n\n- Bundle from regular product (Mackbook Set)\n - Main Body\n - Keyboard\n - Mouse\n - Apple Care (Free A/S Voucher)\n\nAnd again, `IShoppingSaleUnit` does not in itself refer to the\n{@link IShoppingSaleUnitStock final stock} that the\n{@link IShoppingCustomer customer} will {@link IShoppingOrder purchase}.\nThe final stock can be found only after selecting all given\n{@link IShoppingSaleUnitOption options} and their\n{@link IShoppingSaleUnitOptionCandidate candidate values}.\n\nFor example, even if you buy a Macbook, the final stocks are determined only\nafter selecting all the options (CPU / RAM / SSD), etc." }, "IShoppingSaleUnitOption": { "oneOf": [ @@ -12606,7 +12650,7 @@ "$ref": "#/components/schemas/IShoppingSaleUnitSelectableOption" } ], - "description": "Individual option information on units for sale.\n\n`IShoppingSaleUnitOption` is a subsidiary entity of\n{@link IShoppingSaleUnit } that represents individual products in the\n{@link IShoppingSale sale}, and is an entity designed to represent individual\noption information for the unit.\n\nAlso, `IShoppingSaleUnitOption` is an union type of two entities,\n{@link IShoppingSaleUnitSelectableOption } and\n{@link IShoppingSaleUnitDescriptiveOption }. To specify the detailed type of\nthem, just use the `if` statement to the {@link type } property like below:\n\n```typescript\nif (option.type === \"select\")\n option.candidates; // IShoppingSaleUnitSelectableOption\n```\n\n- Examples of Options\n - selectable options\n - Computer: CPU, RAM, SSD, etc.\n - Clothes: size, color, style, etc.\n - descriptive options\n - Engrave\n - Simple question\n\nIf the type of option is a variable value in \"select\", the final stock that the\n{@link IShoppingCustomer customer} will purchase changes depending on the\nselection of the {@link IShoppingSaleUnitOptionCandidate candidate value}.\n\nConversely, if it is a type other than \"select\", or if the type is \"select\" but\nvariable is false, this is an option that has no meaning beyond simple information\ntransfer. Therefore, no matter what value the customer enters and chooses when\npurchasing it, the option in this case does not affect the\n{@link IShoppingSaleUnitStock final stock}." + "description": "Individual option information on units for sale.\n\n`IShoppingSaleUnitOption` is a subsidiary entity of\n{@link IShoppingSaleUnit} that represents individual products in the\n{@link IShoppingSale sale}, and is an entity designed to represent individual\noption information for the unit.\n\nAlso, `IShoppingSaleUnitOption` is an union type of two entities,\n{@link IShoppingSaleUnitSelectableOption} and\n{@link IShoppingSaleUnitDescriptiveOption}. To specify the detailed type of\nthem, just use the `if` statement to the {@link type} property like below:\n\n```typescript\nif (option.type === \"select\")\n option.candidates; // IShoppingSaleUnitSelectableOption\n```\n\n- Examples of Options\n - selectable options\n - Computer: CPU, RAM, SSD, etc.\n - Clothes: size, color, style, etc.\n - descriptive options\n - Engrave\n - Simple question\n\nIf the type of option is a variable value in \"select\", the final stock that the\n{@link IShoppingCustomer customer} will purchase changes depending on the\nselection of the {@link IShoppingSaleUnitOptionCandidate candidate value}.\n\nConversely, if it is a type other than \"select\", or if the type is \"select\" but\nvariable is false, this is an option that has no meaning beyond simple information\ntransfer. Therefore, no matter what value the customer enters and chooses when\npurchasing it, the option in this case does not affect the\n{@link IShoppingSaleUnitStock final stock}." }, "IShoppingSaleUnitSelectableOption": { "type": "object", @@ -12649,7 +12693,7 @@ "name", "variable" ], - "description": "Individual option information on units for sale.\n\n`IShoppingSaleUnitSelectableOption` is a subsidiary entity of\n{@link IShoppingSaleUnit } that represents individual products in the\n{@link IShoppingSale sale}, and is an entity designed to represent individual\nselectable option information for the unit.\n\n- Examples of Options\n - selectable options\n - Computer: CPU, RAM, SSD, etc.\n - Clothes: size, color, style, etc.\n - descriptive options\n - Engrave\n - Simple question\n\nIf the {@link variable } property value is `true`, the final stock that the\n{@link IShoppingCustomer customer} will purchase changes depending on the\nselection of the {@link IShoppingSaleUnitOptionCandidate candidate value}.\n\nConversely, if it is a type other than \"select\", or if the {@link variable }\nproperty value is \"false\", , this is an option that has no meaning beyond\nsimple information transfer. Therefore, no matter what value the customer\nchooses when purchasing it, the option in this case does not affect the\n{@link IShoppingSaleUnitStock final stock}." + "description": "Individual option information on units for sale.\n\n`IShoppingSaleUnitSelectableOption` is a subsidiary entity of\n{@link IShoppingSaleUnit} that represents individual products in the\n{@link IShoppingSale sale}, and is an entity designed to represent individual\nselectable option information for the unit.\n\n- Examples of Options\n - selectable options\n - Computer: CPU, RAM, SSD, etc.\n - Clothes: size, color, style, etc.\n - descriptive options\n - Engrave\n - Simple question\n\nIf the {@link variable} property value is `true`, the final stock that the\n{@link IShoppingCustomer customer} will purchase changes depending on the\nselection of the {@link IShoppingSaleUnitOptionCandidate candidate value}.\n\nConversely, if it is a type other than \"select\", or if the {@link variable}\nproperty value is \"false\", , this is an option that has no meaning beyond\nsimple information transfer. Therefore, no matter what value the customer\nchooses when purchasing it, the option in this case does not affect the\n{@link IShoppingSaleUnitStock final stock}." }, "IShoppingSaleUnitStock": { "type": "object", @@ -12691,7 +12735,7 @@ "inventory", "choices" ], - "description": "Final component information on units for sale.\n\n`IShoppingSaleUnitStock` is a subsidiary entity of {@link IShoppingSaleUnit }\nthat represents a product catalog for sale, and is a kind of final stock that is\nconstructed by selecting all {@link IShoppingSaleUnitSelectableOption options}\n(variable \"select\" type) and their\n{@link IShoppingSaleUnitOptionCandidate candidate} values in the belonging unit.\nIt is the \"good\" itself that customers actually purchase.\n\n- Product Name) MacBook\n - Options\n - CPU: { i3, i5, i7, i9 }\n - RAM: { 8GB, 16GB, 32GB, 64GB, 96GB }\n - SSD: { 256GB, 512GB, 1TB }\n - Number of final stocks: 4 * 5 * 3 = 60\n\nFor reference, the total number of `IShoppingSaleUnitStock` records in an\nattribution unit can be obtained using Cartesian Product. In other words, the\nvalue obtained by multiplying all the candidate values that each\n(variable \"select\" type) option can have by the number of cases is the total\nnumber of final stocks in the unit.\n\nOf course, without a single variable \"select\" type option, the final stocks\ncount in the unit is only 1." + "description": "Final component information on units for sale.\n\n`IShoppingSaleUnitStock` is a subsidiary entity of {@link IShoppingSaleUnit}\nthat represents a product catalog for sale, and is a kind of final stock that is\nconstructed by selecting all {@link IShoppingSaleUnitSelectableOption options}\n(variable \"select\" type) and their\n{@link IShoppingSaleUnitOptionCandidate candidate} values in the belonging unit.\nIt is the \"good\" itself that customers actually purchase.\n\n- Product Name) MacBook\n - Options\n - CPU: { i3, i5, i7, i9 }\n - RAM: { 8GB, 16GB, 32GB, 64GB, 96GB }\n - SSD: { 256GB, 512GB, 1TB }\n - Number of final stocks: 4 * 5 * 3 = 60\n\nFor reference, the total number of `IShoppingSaleUnitStock` records in an\nattribution unit can be obtained using Cartesian Product. In other words, the\nvalue obtained by multiplying all the candidate values that each\n(variable \"select\" type) option can have by the number of cases is the total\nnumber of final stocks in the unit.\n\nOf course, without a single variable \"select\" type option, the final stocks\ncount in the unit is only 1." }, "IShoppingSaleUnitStockChoice": { "type": "object", @@ -12705,12 +12749,12 @@ "option_id": { "type": "string", "format": "uuid", - "description": "Target option's {@link IShoppingSaleUnitOption.id }" + "description": "Target option's {@link IShoppingSaleUnitOption.id}" }, "candidate_id": { "type": "string", "format": "uuid", - "description": "Target candidate's {@link IShoppingSaleUnitOptionCandidate.id }" + "description": "Target candidate's {@link IShoppingSaleUnitOptionCandidate.id}" } }, "required": [ @@ -12839,7 +12883,7 @@ "snapshots", "created_at" ], - "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment },\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." + "description": "A comment written on an inquiry article.\n\n`IShoppingSaleInquiryComment` is a subtype entity of {@link IBbsArticleComment},\nand is used when you want to communicate with multiple people about an\n{@link IShoppingSaleInquiry inquiry} written by a\n{@link IShoppingCustomer customer}.\n\nFor reference, only related parties can write comments for\n{@link IShoppingSeller sellers}, but there is no limit to\n{@link IShoppingCustomer customers}. In other words, anyone customer can\nfreely write a comment, even if they are not the person who wrote the inquiry." }, "IShoppingActorEntity": { "oneOf": [ @@ -12847,12 +12891,20 @@ "$ref": "#/components/schemas/IShoppingAdministrator.IInvert" }, { - "$ref": "#/components/schemas/IShoppingSeller.IInvert" + "$ref": "#/components/schemas/IShoppingCustomer" }, { - "$ref": "#/components/schemas/IShoppingCustomer" + "$ref": "#/components/schemas/IShoppingSeller.IInvert" } - ] + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "administrator": "#/components/schemas/IShoppingAdministrator.IInvert", + "customer": "#/components/schemas/IShoppingCustomer", + "seller": "#/components/schemas/IShoppingSeller.IInvert" + } + } }, "IBbsArticleComment.ISnapshot": { "type": "object", @@ -12895,7 +12947,7 @@ "body", "files" ], - "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment }, designed to keep evidence\nand prevent fraud." + "description": "Snapshot of comment.\n\n`IBbsArticleComment.ISnapshot` is a snapshot entity that contains\nthe contents of the comment.\n\nAs mentioned in {@link IBbsArticleComment}, designed to keep evidence\nand prevent fraud." }, "IBbsArticleComment.Format": { "oneOf": [ @@ -13446,7 +13498,7 @@ "type": { "const": "question", "title": "Type of the derived inquiry", - "description": "Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion }\n- `review`: {@link IShoppingSaleReview }" + "description": "Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion}\n- `review`: {@link IShoppingSaleReview}" }, "customer": { "$ref": "#/components/schemas/IShoppingCustomer", @@ -13502,7 +13554,7 @@ "snapshots", "created_at" ], - "description": "Question about sale snapshot.\n\n`IShoppingSaleQuestion` is a subtype entity of {@link IShoppingSaleInquiry },\nand is used when a {@link IShoppingCustomer customer} wants to ask something\nabout a {@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at\nthe time) registered by the {@link IShoppingSeller seller}.\n\nAnd, like most shopping malls, `IShoppingSaleQuestion` also provides\na {@link secret } attribute, allowing you to create a \"secret message\" that can\nonly be viewed by the seller and the customer who wrote the question." + "description": "Question about sale snapshot.\n\n`IShoppingSaleQuestion` is a subtype entity of {@link IShoppingSaleInquiry},\nand is used when a {@link IShoppingCustomer customer} wants to ask something\nabout a {@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at\nthe time) registered by the {@link IShoppingSeller seller}.\n\nAnd, like most shopping malls, `IShoppingSaleQuestion` also provides\na {@link secret} attribute, allowing you to create a \"secret message\" that can\nonly be viewed by the seller and the customer who wrote the question." }, "IShoppingSaleInquiryAnswer": { "type": "object", @@ -13588,7 +13640,7 @@ "body", "files" ], - "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle }, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." + "description": "Snapshot of article.\n\n`IBbsArticle.ISnapshot` is a snapshot entity that contains the contents of\nthe article, as mentioned in {@link IBbsArticle}, the contents of the article\nare separated from the article record to keep evidence and prevent fraud." }, "IShoppingSaleReview.IRequest": { "type": "object", @@ -13911,7 +13963,7 @@ "type": { "const": "review", "title": "Type of the derived inquiry", - "description": "Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion }\n- `review`: {@link IShoppingSaleReview }" + "description": "Type of the derived inquiry.\n\n- `question`: {@link IShoppingSaleQuestion}\n- `review`: {@link IShoppingSaleReview}" }, "customer": { "$ref": "#/components/schemas/IShoppingCustomer", @@ -13966,7 +14018,7 @@ "snapshots", "created_at" ], - "description": "Reviews for sale snapshots.\n\n`IShoppingSaleReview` is a subtype entity of {@link IShoppingSaleInquiry },\nand is used when a {@link IShoppingCustomer customer} purchases a\n{@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at the time)\nregistered by the {@link IShoppingSeller seller} as a product and leaves a\nreview and rating for it.\n\nFor reference, `IShoppingSaleReview` and\n{@link IShoppingOrderGod shopping_order_goods} have a logarithmic relationship\nof N: 1, but this does not mean that customers can continue to write reviews\nfor the same product indefinitely. Wouldn't there be restrictions, such as\nif you write a review once, you can write an additional review a month later?" + "description": "Reviews for sale snapshots.\n\n`IShoppingSaleReview` is a subtype entity of {@link IShoppingSaleInquiry},\nand is used when a {@link IShoppingCustomer customer} purchases a\n{@link IShoppingSale sale} ({@link IShoppingSaleSnapshot snapshot} at the time)\nregistered by the {@link IShoppingSeller seller} as a product and leaves a\nreview and rating for it.\n\nFor reference, `IShoppingSaleReview` and\n{@link IShoppingOrderGod shopping_order_goods} have a logarithmic relationship\nof N: 1, but this does not mean that customers can continue to write reviews\nfor the same product indefinitely. Wouldn't there be restrictions, such as\nif you write a review once, you can write an additional review a month later?" }, "IShoppingSaleReview.ISnapshot": { "type": "object", @@ -14193,7 +14245,7 @@ "tags", "units" ], - "description": "Snapshot record of sale.\n\n`IShoppingSaleSnapshot` is an entity that embodies a snapshot of a sale,\nand the ERD (Entity Relationship Diagram) describes the role of the\n`shopping_sale_snapshots` table as follows:\n\n> {@link IShoppingSale shopping_sales} is an entity that embodies\n> \"product sales\" (sales) information registered by the\n> {@link IShoppingSeller seller}. And the main information of the sale is\n> recorded in the sub `shopping_sale_snapshots`, not in the main\n> {@link IShoppingSale shopping_sales}. When a seller changes a previously\n> registered item, the existing {@link IShoppingSale shopping_sales} record\n> is not changed, but a new snapshot record is created.\n>\n> This is to preserve the {@link IShoppingCustomer customer}'s\n> {@link IShoppingOrder purchase history} flawlessly after the customer\n> purchases a specific item, even if the seller changes the components or price\n> of the item. It is also intended to support sellers in so-called A/B testing,\n> which involves changing components or prices and measuring the performance\n> in each case.\n\nBy the way, DTO (Data Transfer Object) level used by the front-end developer,\nit does not distinguish {@link IShoppingSale } and `IShoppingSaleSnapshot`\nstrictly, and generally handles {@link IShoppingSale } and snapshot together.\n\nBut even though the DTO level does not strictly distinguish them, the word and\nconcept of \"snapshot\" is still important, so it is recommended to understand\nthe concept of \"snapshot\" properly." + "description": "Snapshot record of sale.\n\n`IShoppingSaleSnapshot` is an entity that embodies a snapshot of a sale,\nand the ERD (Entity Relationship Diagram) describes the role of the\n`shopping_sale_snapshots` table as follows:\n\n> {@link IShoppingSale shopping_sales} is an entity that embodies\n> \"product sales\" (sales) information registered by the\n> {@link IShoppingSeller seller}. And the main information of the sale is\n> recorded in the sub `shopping_sale_snapshots`, not in the main\n> {@link IShoppingSale shopping_sales}. When a seller changes a previously\n> registered item, the existing {@link IShoppingSale shopping_sales} record\n> is not changed, but a new snapshot record is created.\n>\n> This is to preserve the {@link IShoppingCustomer customer}'s\n> {@link IShoppingOrder purchase history} flawlessly after the customer\n> purchases a specific item, even if the seller changes the components or price\n> of the item. It is also intended to support sellers in so-called A/B testing,\n> which involves changing components or prices and measuring the performance\n> in each case.\n\nBy the way, DTO (Data Transfer Object) level used by the front-end developer,\nit does not distinguish {@link IShoppingSale} and `IShoppingSaleSnapshot`\nstrictly, and generally handles {@link IShoppingSale} and snapshot together.\n\nBut even though the DTO level does not strictly distinguish them, the word and\nconcept of \"snapshot\" is still important, so it is recommended to understand\nthe concept of \"snapshot\" properly." }, "IShoppingChannelCategory.ICreate": { "type": "object", @@ -14285,7 +14337,7 @@ "name", "created_at" ], - "description": "Category of channel.\n\n`IShoppingChannelCategory` is a concept that refers to classification\ncategories within a specific {@link IShoppingChannel channel}, and is exactly\nthe same as the concept commonly referred to as \"category\" in shopping malls.\n\nAnd `IShoppingChannelCategory` is different with {@link IShoppingSection }.\n{@link IShoppingSection } refers to a \"corner\" that is independent spatial\ninformation in the offline market, which cannot simultaneously classified in\na {@link IShoppingSale sale}. Besides, `IShoppingChannelCategory` can be\nclassified into multiple categories in a sale simultaneously.\n\nProduct\t| Section (corner) | Categories\n---------|------------------|-----------------------------------\nBeef\t | Butcher corner | Frozen food, Meat, Favorite food\nGrape | Fruit corner | Fresh food, Favorite food\n\nIn addition, as `IShoppingChannelCategory` has 1:N self recursive relationship,\nit is possible to express below hierarchical structures. Thus, each channel\ncan set their own category classification as they want.\n\n- Food > Meat > Frozen\n- Electronics > Notebook > 15 inches\n- Miscellaneous > Wallet\n\nFurthermore, `IShoppingChannelCategory` is designed to merge between themselves,\nso there is no burden to edit the category at any time." + "description": "Category of channel.\n\n`IShoppingChannelCategory` is a concept that refers to classification\ncategories within a specific {@link IShoppingChannel channel}, and is exactly\nthe same as the concept commonly referred to as \"category\" in shopping malls.\n\nAnd `IShoppingChannelCategory` is different with {@link IShoppingSection}.\n{@link IShoppingSection} refers to a \"corner\" that is independent spatial\ninformation in the offline market, which cannot simultaneously classified in\na {@link IShoppingSale sale}. Besides, `IShoppingChannelCategory` can be\nclassified into multiple categories in a sale simultaneously.\n\nProduct\t| Section (corner) | Categories\n---------|------------------|-----------------------------------\nBeef\t | Butcher corner | Frozen food, Meat, Favorite food\nGrape | Fruit corner | Fresh food, Favorite food\n\nIn addition, as `IShoppingChannelCategory` has 1:N self recursive relationship,\nit is possible to express below hierarchical structures. Thus, each channel\ncan set their own category classification as they want.\n\n- Food > Meat > Frozen\n- Electronics > Notebook > 15 inches\n- Miscellaneous > Wallet\n\nFurthermore, `IShoppingChannelCategory` is designed to merge between themselves,\nso there is no burden to edit the category at any time." }, "IShoppingChannelCategory.IHierarchical": { "type": "object", @@ -14345,7 +14397,7 @@ "type": "string", "format": "uuid", "title": "Target record to keep after merging", - "description": "Target record to keep after merging.\n\nAfter merge process, {@link absorbed } records would be merged into\nthis {@link keep } record." + "description": "Target record to keep after merging.\n\nAfter merge process, {@link absorbed} records would be merged into\nthis {@link keep} record." }, "absorbed": { "type": "array", @@ -14353,15 +14405,15 @@ "type": "string", "format": "uuid" }, - "title": "To be absorbed to {@link keep } after merging", - "description": "To be absorbed to {@link keep } after merging." + "title": "To be absorbed to {@link keep} after merging", + "description": "To be absorbed to {@link keep} after merging." } }, "required": [ "keep", "absorbed" ], - "description": "Record Merge DTO.\n\n`IRecordMerge` is a structure for merging records.\n\nThe `merge` means that merging multiple {@link IRecordMerge.absorbed }\nrecords into {@link IRecordMerge.keep } instead of deleting\n{@link IRecordMerge.absorbed } records.\n\nIf there're some dependent tables of the target `table` having\nunique constraint on foriegn key column, such dependent tables\nalso perform the merge process, too.\n\nOf course, if there're another dependent tables under those\ndependents, they also perform the merge process recursively as well.\nSuch recursive merge process still works for self-recursive\n(tree-structured) tables." + "description": "Record Merge DTO.\n\n`IRecordMerge` is a structure for merging records.\n\nThe `merge` means that merging multiple {@link IRecordMerge.absorbed}\nrecords into {@link IRecordMerge.keep} instead of deleting\n{@link IRecordMerge.absorbed} records.\n\nIf there're some dependent tables of the target `table` having\nunique constraint on foriegn key column, such dependent tables\nalso perform the merge process, too.\n\nOf course, if there're another dependent tables under those\ndependents, they also perform the merge process recursively as well.\nSuch recursive merge process still works for self-recursive\n(tree-structured) tables." }, "IShoppingChannel.ICreate": { "type": "object", @@ -14737,7 +14789,7 @@ "type": "string", "format": "uri", "title": "Connection address", - "description": "Connection address.\n\nSame with {@link window.location.href } of client." + "description": "Connection address.\n\nSame with {@link window.location.href} of client." }, "referrer": { "oneOf": [ @@ -14750,7 +14802,7 @@ } ], "title": "Referrer address", - "description": "Referrer address.\n\nSame with {@link window.document.referrer } of client." + "description": "Referrer address.\n\nSame with {@link window.document.referrer} of client." }, "ip": { "oneOf": [ @@ -14882,7 +14934,7 @@ "application": { "type": "string", "title": "Identifier code of the external service", - "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code } in common." + "description": "Identifier code of the external service.\n\nIt can be same with {@link IShoppingChannel.code} in common." }, "uid": { "type": "string", @@ -15784,8 +15836,8 @@ "sale_id": { "type": "string", "format": "uuid", - "title": "Target sale's {@link IShoppingSale.id }", - "description": "Target sale's {@link IShoppingSale.id }." + "title": "Target sale's {@link IShoppingSale.id}", + "description": "Target sale's {@link IShoppingSale.id}." }, "stocks": { "type": "array", @@ -15800,7 +15852,7 @@ "type": "integer", "minimum": 1, "title": "Volume of the commodity to purchase", - "description": "Volume of the commodity to purchase.\n\nA value indicating how many sets would be multiplied to the children\n{@link IShoppingSaleUnitStock.IInvert.quantity } values." + "description": "Volume of the commodity to purchase.\n\nA value indicating how many sets would be multiplied to the children\n{@link IShoppingSaleUnitStock.IInvert.quantity} values." }, "accumulate": { "type": "boolean", @@ -15821,14 +15873,14 @@ "unit_id": { "type": "string", "format": "uuid", - "title": "Target unit's {@link IShoppingSaleUnit.id }", - "description": "Target unit's {@link IShoppingSaleUnit.id }." + "title": "Target unit's {@link IShoppingSaleUnit.id}", + "description": "Target unit's {@link IShoppingSaleUnit.id}." }, "stock_id": { "type": "string", "format": "uuid", - "title": "Target stock's {@link IShoppingSaleUnitStock.id }", - "description": "Target stock's {@link IShoppingSaleUnitStock.id }.\n\nIt must be matched with the {@link choices } property." + "title": "Target stock's {@link IShoppingSaleUnitStock.id}", + "description": "Target stock's {@link IShoppingSaleUnitStock.id}.\n\nIt must be matched with the {@link choices} property." }, "choices": { "type": "array", @@ -15842,7 +15894,7 @@ "type": "integer", "minimum": 1, "title": "Quantity of the stock to purchase", - "description": "Quantity of the stock to purchase.\n\nThis value is multiplied by the {@link IShoppingCartCommodity.volume }." + "description": "Quantity of the stock to purchase.\n\nThis value is multiplied by the {@link IShoppingCartCommodity.volume}." } }, "required": [ @@ -15851,7 +15903,7 @@ "choices", "quantity" ], - "description": "Creation information of the commodity stock of shopping cart.\n\nWhen record being created, its corresponding structure would be\n{@link IShoppingSaleSnapshotUnit.IInvert } and\n{@link IShoppingSaleSnapshotUnitStock.IInvert }." + "description": "Creation information of the commodity stock of shopping cart.\n\nWhen record being created, its corresponding structure would be\n{@link IShoppingSaleSnapshotUnit.IInvert} and\n{@link IShoppingSaleSnapshotUnitStock.IInvert}." }, "IShoppingCartCommodityStockChoice.ICreate": { "type": "object", @@ -15859,8 +15911,8 @@ "option_id": { "type": "string", "format": "uuid", - "title": "Target option's {@link IShoppingSaleUnitOption.id }", - "description": "Target option's {@link IShoppingSaleUnitOption.id }." + "title": "Target option's {@link IShoppingSaleUnitOption.id}", + "description": "Target option's {@link IShoppingSaleUnitOption.id}." }, "candidate_id": { "oneOf": [ @@ -15872,8 +15924,8 @@ "format": "uuid" } ], - "title": "Target candidate's {@link IShoppingSaleUnitOptionCandidate.id }", - "description": "Target candidate's {@link IShoppingSaleUnitOptionCandidate.id }.\n\nWhen target option's type is `select`, then this attribute is not\n`null` but has a value." + "title": "Target candidate's {@link IShoppingSaleUnitOptionCandidate.id}", + "description": "Target candidate's {@link IShoppingSaleUnitOptionCandidate.id}.\n\nWhen target option's type is `select`, then this attribute is not\n`null` but has a value." }, "value": { "oneOf": [ @@ -15899,7 +15951,7 @@ "candidate_id", "value" ], - "description": "Creation information of the choice for each option.\n\nWhen record being created, its corresponding structure would be\n{@link IShoppingSaleUnitStockChoice.IInvert }." + "description": "Creation information of the choice for each option.\n\nWhen record being created, its corresponding structure would be\n{@link IShoppingSaleUnitStockChoice.IInvert}." }, "IShoppingCartCommodity.IUpdate": { "type": "object", @@ -15908,7 +15960,7 @@ "type": "integer", "minimum": 1, "title": "Volume of the commodity to purchase", - "description": "Volume of the commodity to purchase.\n\nA value indicating how many sets would be multiplied to the children\n{@link IShoppingSaleUnitStock.IInvert.quantity } values." + "description": "Volume of the commodity to purchase.\n\nA value indicating how many sets would be multiplied to the children\n{@link IShoppingSaleUnitStock.IInvert.quantity} values." } }, "required": [ @@ -16047,13 +16099,13 @@ "commodity_id": { "type": "string", "format": "uuid", - "title": "Target commodity's {@link IShoppingCartCommodity.id }", - "description": "Target commodity's {@link IShoppingCartCommodity.id }." + "title": "Target commodity's {@link IShoppingCartCommodity.id}", + "description": "Target commodity's {@link IShoppingCartCommodity.id}." }, "volume": { "type": "integer", "title": "Volume of the good", - "description": "Volume of the good.\n\nThe value multiplied to {@link IShoppingCartCommodityStock.quantity }.\nIt's purpose is exactly same with {@link IShoppingCartCommodity.volume },\nbut rewritten because the {@link IShoppingCartCommodity } records are reusable\nuntil payment." + "description": "Volume of the good.\n\nThe value multiplied to {@link IShoppingCartCommodityStock.quantity}.\nIt's purpose is exactly same with {@link IShoppingCartCommodity.volume},\nbut rewritten because the {@link IShoppingCartCommodity} records are reusable\nuntil payment." } }, "required": [ @@ -16391,8 +16443,8 @@ "good_id": { "type": "string", "format": "uuid", - "title": "Target good's {@link IShoppingOrderGood.id }", - "description": "Target good's {@link IShoppingOrderGood.id }." + "title": "Target good's {@link IShoppingOrderGood.id}", + "description": "Target good's {@link IShoppingOrderGood.id}." }, "score": { "type": "number", @@ -16780,20 +16832,20 @@ "publish_id": { "type": "string", "format": "uuid", - "title": "Target order's {@link IShoppingOrderPublish.id }", - "description": "Target order's {@link IShoppingOrderPublish.id }." + "title": "Target order's {@link IShoppingOrderPublish.id}", + "description": "Target order's {@link IShoppingOrderPublish.id}." }, "good_id": { "type": "string", "format": "uuid", - "title": "Target good's {@link IShoppingOrderGood.id }", - "description": "Target good's {@link IShoppingOrderGood.id }." + "title": "Target good's {@link IShoppingOrderGood.id}", + "description": "Target good's {@link IShoppingOrderGood.id}." }, "stock_id": { "type": "string", "format": "uuid", - "title": "Target stock's {@link IShoppingSaleUnitStock.id }", - "description": "Target stock's {@link IShoppingSaleUnitStock.id }." + "title": "Target stock's {@link IShoppingSaleUnitStock.id}", + "description": "Target stock's {@link IShoppingSaleUnitStock.id}." }, "quantity": { "type": "number", @@ -16959,8 +17011,8 @@ "properties": { "section_code": { "type": "string", - "title": "Belonged section's {@link IShoppingSection.code }", - "description": "Belonged section's {@link IShoppingSection.code }." + "title": "Belonged section's {@link IShoppingSection.code}", + "description": "Belonged section's {@link IShoppingSection.code}." }, "status": { "oneOf": [ @@ -17085,8 +17137,8 @@ "properties": { "code": { "type": "string", - "title": "Target channel's {@link IShoppingChannel.code }", - "description": "Target channel's {@link IShoppingChannel.code }." + "title": "Target channel's {@link IShoppingChannel.code}", + "description": "Target channel's {@link IShoppingChannel.code}." }, "category_ids": { "type": "array", @@ -17094,8 +17146,8 @@ "type": "string", "format": "uuid" }, - "title": "List of target categories' {@link IShoppingChannelCategory.id }s", - "description": "List of target categories' {@link IShoppingChannelCategory.id }s.\n\nIf empty, it means all categories of the channel is listing the sale." + "title": "List of target categories' {@link IShoppingChannelCategory.id}s", + "description": "List of target categories' {@link IShoppingChannelCategory.id}s.\n\nIf empty, it means all categories of the channel is listing the sale." } }, "required": [ @@ -17277,11 +17329,11 @@ "properties": { "option_index": { "type": "integer", - "description": "Target option's index number in\n{@link IShoppingSaleUnit.ICreate.options }." + "description": "Target option's index number in\n{@link IShoppingSaleUnit.ICreate.options}." }, "candidate_index": { "type": "integer", - "description": "Target candidate's index number in\n{@link IShoppingSaleUnitSelectableOption.ICreate.candidates }." + "description": "Target candidate's index number in\n{@link IShoppingSaleUnitSelectableOption.ICreate.candidates}." } }, "required": [ @@ -17487,7 +17539,7 @@ "value", "created_at" ], - "description": "Supplementation of inventory quantity of stock.\n\nYou know what? If a {@link IShoppingSaleUnitStock stock} has been sold over\nits {@link IShoppingSaleUnitStock.ICreate.quantity initial inventory quantity},\nthe stock can't be sold anymore, because of out of stock. In that case, how the\n{@link IShoppingSeller } should do?\n\nWhen the sotck is sold out, seller can supplement the inventory record by\nregistering this `IShoppingSaleUnitStockSupplement` record. Right, this\n`IShoppingSaleUnitStockSupplement` is an entity that embodies the\nsupplementation of the inventory quantity of the belonged stock." + "description": "Supplementation of inventory quantity of stock.\n\nYou know what? If a {@link IShoppingSaleUnitStock stock} has been sold over\nits {@link IShoppingSaleUnitStock.ICreate.quantity initial inventory quantity},\nthe stock can't be sold anymore, because of out of stock. In that case, how the\n{@link IShoppingSeller} should do?\n\nWhen the sotck is sold out, seller can supplement the inventory record by\nregistering this `IShoppingSaleUnitStockSupplement` record. Right, this\n`IShoppingSaleUnitStockSupplement` is an entity that embodies the\nsupplementation of the inventory quantity of the belonged stock." }, "IShoppingSaleUnitStockSupplement.ICreate": { "type": "object", @@ -17534,5 +17586,6 @@ { "name": "Section" } - ] + ], + "x-samchon-emended": true } \ No newline at end of file diff --git a/examples/swagger/toss.json b/examples/swagger/toss.json index b9280da..97e4c82 100644 --- a/examples/swagger/toss.json +++ b/examples/swagger/toss.json @@ -1,5 +1,5 @@ { - "openapi": "3.0.1", + "openapi": "3.1.0", "servers": [ { "url": "http://localhost:30771", @@ -12,8 +12,8 @@ ], "info": { "title": "Toss Payments API", - "description": "Built by [fake-toss-payments-server](https://github.com/samchon/fake-toss-payments-server) with [nestia](https://github.com/samchon/nestia)", - "version": "2.0.0", + "description": "Built by [fake-toss-payments-server](https://github.com/samchon/payments/tree/master/packages/toss-payments-server-api) with [nestia](https://github.com/samchon/nestia)", + "version": "8.1.0", "license": { "name": "MIT" } @@ -28,12 +28,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ITossBilling.IStore" + "$ref": "#/components/schemas/ITossBilling.ICreate" } } }, - "required": true, - "x-nestia-encrypted": false + "required": true }, "responses": { "201": { @@ -44,65 +43,16 @@ "$ref": "#/components/schemas/ITossBilling" } } - }, - "x-nestia-encrypted": false + } } }, "summary": "간편 결제 카드 등록하기", - "description": "간편 결제 카드 등록하기.\n\n`billing.authorizations.card.store` 는 고객이 자신의 신록 카드를 서버에 등록해두고,\n매번 결제가 필요할 때마다 카드 정보를 반복 입력하는 일 없이 간편하게 결제를\n진행하고자 할 때, 호출되는 API 함수이다.\n\n참고로 `billing.authorizations.card.store` 는 클라이언트 어플리케이션이 토스\n페이먼츠가 제공하는 간편 결제 카드 등록 창을 사용하는 경우, 귀하의 백엔드 서버가 이를\n실 서비스에서 호출하는 일은 없을 것이다. 다만, 고객이 간편 결제 카드를 등록하는\n상황을 시뮬레이션하기 위하여, 테스트 자동화 프로그램 수준에서 사용될 수는 있다.", + "description": "간편 결제 카드 등록하기.\n\n`billing.authorizations.card.create` 는 고객이 자신의 신록 카드를 서버에 등록해두고,\n매번 결제가 필요할 때마다 카드 정보를 반복 입력하는 일 없이 간편하게 결제를\n진행하고자 할 때, 호출되는 API 함수이다.\n\n참고로 `billing.authorizations.card.create` 는 클라이언트 어플리케이션이 토스\n페이먼츠가 제공하는 간편 결제 카드 등록 창을 사용하는 경우, 귀하의 백엔드 서버가 이를\n실 서비스에서 호출하는 일은 없을 것이다. 다만, 고객이 간편 결제 카드를 등록하는\n상황을 시뮬레이션하기 위하여, 테스트 자동화 프로그램 수준에서 사용될 수는 있다.", "security": [ { "basic": [] } - ], - "x-nestia-namespace": "v1.billing.authorizations.card.store", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "input", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "간편 결제 카드 등록 정보", - "kind": "text" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "간편 결제 카드 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "basic", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "POST" + ] } }, "/v1/billing/authorizations/{billingKey}": { @@ -115,8 +65,8 @@ "schema": { "type": "string" }, - "description": "대상 정보의 ", - "required": true + "required": true, + "description": " 대상 정보의 {@link ITossBilling.billingKey}" } ], "requestBody": { @@ -128,8 +78,7 @@ } } }, - "required": true, - "x-nestia-encrypted": false + "required": true }, "responses": { "201": { @@ -140,8 +89,7 @@ "$ref": "#/components/schemas/ITossBilling" } } - }, - "x-nestia-encrypted": false + } } }, "summary": "간편 결제로 등록한 수단 조회하기", @@ -150,91 +98,7 @@ { "basic": [] } - ], - "x-nestia-namespace": "v1.billing.authorizations.at", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "billingKey", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "대상 정보의 ", - "kind": "text" - }, - { - "text": "{@link ", - "kind": "link" - }, - { - "text": "ITossBilling.billingKey", - "kind": "linkName", - "target": { - "fileName": "C:/github/samchon/fake-toss-payments-server/src/api/structures/ITossBilling.ts", - "textSpan": { - "start": 500, - "length": 19 - } - } - }, - { - "text": "}", - "kind": "link" - } - ] - }, - { - "name": "param", - "text": [ - { - "text": "input", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "고객 식별자 키", - "kind": "text" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "간편 결제 수단 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "basic", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "POST" + ] } }, "/v1/billing/{billingKey}": { @@ -247,8 +111,8 @@ "schema": { "type": "string" }, - "description": "간편 결제에 등록한 수단의 ", - "required": true + "required": true, + "description": " 간편 결제에 등록한 수단의 {@link ITossBilling.billingKey}" } ], "requestBody": { @@ -260,8 +124,7 @@ } } }, - "required": true, - "x-nestia-encrypted": false + "required": true }, "responses": { "201": { @@ -272,101 +135,16 @@ "$ref": "#/components/schemas/ITossPayment" } } - }, - "x-nestia-encrypted": false + } } }, "summary": "간편 결제에 등록한 수단으로 결제하기", - "description": "간편 결제에 등록한 수단으로 결제하기.\n\n`billing.pay` 는 간편 결제에 등록한 수단으로 결제를 진행하고자 할 때 호출하는 API\n함수이다.\n\n그리고 `billing.pay` 는 결제 수단 중 유일하게, 클라이언트 어플리케이션이 토스\n페이먼츠가 제공하는 결제 창을 사용할 수 없어, 귀하의 백엔드 서버가 토스 페이먼츠의\nAPI 함수를 직접 호출해야 하는 경우에 해당한다. 따라서 간편 결제에 관련하여 토스\n페이먼츠와 연동하는 백엔드 서버 및 프론트 어플리케이션을 개발할 때, 반드시 이 상황에\n대한 별도의 설계 및 개발이 필요하니, 이 점을 염두에 두기 바란다.\n\n더하여 `billing.pay` 는 철저히 귀사 백엔드 서버의 판단 아래 호출되는 API 함수인지라,\n이를 통하여 이루어지는 결제는 일절 {@link payments.approve } 가 필요 없다. 다만\n`billing.pay` 는 이처럼 부차적인 승인 과정 필요없이 그 즉시로 결제가 완성되니, 이를\n호출하는 상황에 대하여 세심히 주의를 기울일 필요가 있다", + "description": "간편 결제에 등록한 수단으로 결제하기.\n\n`billing.pay` 는 간편 결제에 등록한 수단으로 결제를 진행하고자 할 때 호출하는 API\n함수이다.\n\n그리고 `billing.pay` 는 결제 수단 중 유일하게, 클라이언트 어플리케이션이 토스\n페이먼츠가 제공하는 결제 창을 사용할 수 없어, 귀하의 백엔드 서버가 토스 페이먼츠의\nAPI 함수를 직접 호출해야 하는 경우에 해당한다. 따라서 간편 결제에 관련하여 토스\n페이먼츠와 연동하는 백엔드 서버 및 프론트 어플리케이션을 개발할 때, 반드시 이 상황에\n대한 별도의 설계 및 개발이 필요하니, 이 점을 염두에 두기 바란다.\n\n더하여 `billing.pay` 는 철저히 귀사 백엔드 서버의 판단 아래 호출되는 API 함수인지라,\n이를 통하여 이루어지는 결제는 일절 {@link payments.approve} 가 필요 없다. 다만\n`billing.pay` 는 이처럼 부차적인 승인 과정 필요없이 그 즉시로 결제가 완성되니, 이를\n호출하는 상황에 대하여 세심히 주의를 기울일 필요가 있다", "security": [ { "basic": [] } - ], - "x-nestia-namespace": "v1.billing.pay", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "billingKey", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "간편 결제에 등록한 수단의 ", - "kind": "text" - }, - { - "text": "{@link ", - "kind": "link" - }, - { - "text": "ITossBilling.billingKey", - "kind": "linkName", - "target": { - "fileName": "C:/github/samchon/fake-toss-payments-server/src/api/structures/ITossBilling.ts", - "textSpan": { - "start": 500, - "length": 19 - } - } - }, - { - "text": "}", - "kind": "link" - } - ] - }, - { - "name": "param", - "text": [ - { - "text": "input", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "주문 정보", - "kind": "text" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "결제 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "basic", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "POST" + ] } }, "/v1/cash-receipts": { @@ -378,12 +156,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ITossCashReceipt.IStore" + "$ref": "#/components/schemas/ITossCashReceipt.ICreate" } } }, - "required": true, - "x-nestia-encrypted": false + "required": true }, "responses": { "201": { @@ -394,8 +171,7 @@ "$ref": "#/components/schemas/ITossCashReceipt" } } - }, - "x-nestia-encrypted": false + } } }, "summary": "현금 영수증 발행하기", @@ -404,55 +180,7 @@ { "basic": [] } - ], - "x-nestia-namespace": "v1.cash-receipts.store", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "input", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "입력 정보", - "kind": "text" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "현금 영수증 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "basic", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "POST" + ] } }, "/v1/cash-receipts/{receiptKey}/cancel": { @@ -465,8 +193,8 @@ "schema": { "type": "string" }, - "description": "현금 영수증의 ", - "required": true + "required": true, + "description": " 현금 영수증의 {@link ITossCashReceipt.receiptKey}" } ], "requestBody": { @@ -478,8 +206,7 @@ } } }, - "required": true, - "x-nestia-encrypted": false + "required": true }, "responses": { "201": { @@ -490,8 +217,7 @@ "$ref": "#/components/schemas/ITossCashReceipt" } } - }, - "x-nestia-encrypted": false + } } }, "summary": "현금 영수증 취소하기", @@ -500,91 +226,7 @@ { "basic": [] } - ], - "x-nestia-namespace": "v1.cash-receipts.cancel.cancel", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "receiptKey", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "현금 영수증의 ", - "kind": "text" - }, - { - "text": "{@link ", - "kind": "link" - }, - { - "text": "ITossCashReceipt.receiptKey", - "kind": "linkName", - "target": { - "fileName": "C:/github/samchon/fake-toss-payments-server/src/api/structures/ITossCashReceipt.ts", - "textSpan": { - "start": 199, - "length": 19 - } - } - }, - { - "text": "}", - "kind": "link" - } - ] - }, - { - "name": "param", - "text": [ - { - "text": "input", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "취소 입력 정보", - "kind": "text" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "취소된 현금 영수증 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "basic", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "POST" + ] } }, "/internal/webhook": { @@ -600,51 +242,19 @@ } } }, - "required": true, - "x-nestia-encrypted": false + "required": true }, "responses": { "201": { - "description": "", - "x-nestia-encrypted": false + "description": "" } }, "summary": "웹훅 이벤트 더미 리스너", - "description": "웹훅 이벤트 더미 리스너.\n\n`internal.webhook` 은 실제 토스 페이먼츠의 결제 서버에는 존재하지 않는 API 로써,\n`fake-toss-payments-server` 의 {@link Configuration.WEBHOOK_URL } 에 아무런 URL 을\n설정하지 않으면, `fake-toss-payments-server` 로부터 발생하는 모든 종류의 웹훅\n이벤트는 이 곳으로 전달되어 무의미하게 사라진다.\n\n따라서 `fake-toss-payments-server` 를 사용하여 토스 페이먼츠 서버와의 연동을 미리\n검증코자 할 때는, 반드시 {@link Configuration.WEBHOOK_URL } 를 설정하여 웹훅\n이벤트가 귀하의 백엔드 서버로 제대로 전달되도록 하자.", - "x-nestia-namespace": "internal.webhook.webhook", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "input", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "웹훅 이벤트 정보", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "POST" + "description": "웹훅 이벤트 더미 리스너.\n\n`internal.webhook` 은 실제 토스 페이먼츠의 결제 서버에는 존재하지 않는 API 로써,\n`fake-toss-payments-server` 의 {@link Configuration.WEBHOOK_URL} 에 아무런 URL 을\n설정하지 않으면, `fake-toss-payments-server` 로부터 발생하는 모든 종류의 웹훅\n이벤트는 이 곳으로 전달되어 무의미하게 사라진다.\n\n따라서 `fake-toss-payments-server` 를 사용하여 토스 페이먼츠 서버와의 연동을 미리\n검증코자 할 때는, 반드시 {@link Configuration.WEBHOOK_URL} 를 설정하여 웹훅\n이벤트가 귀하의 백엔드 서버로 제대로 전달되도록 하자." } }, "/internal/{paymentKey}/deposit": { - "get": { + "put": { "tags": [], "parameters": [ { @@ -653,8 +263,8 @@ "schema": { "type": "string" }, - "description": "대상 가상 계좌 결제 정보의 ", - "required": true + "required": true, + "description": " 대상 가상 계좌 결제 정보의 {@link ITossPayment.paymentKey}" } ], "responses": { @@ -666,8 +276,7 @@ "$ref": "#/components/schemas/ITossPayment" } } - }, - "x-nestia-encrypted": false + } } }, "summary": "가상 계좌에 입금하기", @@ -676,74 +285,7 @@ { "basic": [] } - ], - "x-nestia-namespace": "internal.deposit.deposit", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "paymentKey", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "대상 가상 계좌 결제 정보의 ", - "kind": "text" - }, - { - "text": "{@link ", - "kind": "link" - }, - { - "text": "ITossPayment.paymentKey", - "kind": "linkName", - "target": { - "fileName": "C:/github/samchon/fake-toss-payments-server/src/api/structures/ITossPayment.ts", - "textSpan": { - "start": 2480, - "length": 19 - } - } - }, - { - "text": "}", - "kind": "link" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "입금 완료된 가상 꼐좌 결제 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "basic", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "GET" + ] } }, "/v1/payments/{paymentKey}": { @@ -756,8 +298,8 @@ "schema": { "type": "string" }, - "description": "결제 정보의 ", - "required": true + "required": true, + "description": " 결제 정보의 {@link ITossPayment.paymentKey}" } ], "responses": { @@ -769,70 +311,11 @@ "$ref": "#/components/schemas/ITossPayment" } } - }, - "x-nestia-encrypted": false + } } }, "summary": "결제 정보 조회하기", - "description": "결제 정보 조회하기.\n\n`payments.at` 은 결제 정보를 조회하는 함수이다.\n\n주로 클라이언트 어플리케이션이 토스 페이먼츠가 자체적으로 제공하는 결제 창을 사용하는\n경우, 그래서 프론트 어플리케이션이 귀하의 백엔드 서버에 `paymentKey` 등 극히 일부의\n식별자 정보만을 전달해주어, 상세 결제 정보가 필요할 때 사용한다.\n\n참고로 토스 페이먼츠는 다른 결제 PG 사들과 다르게, 클라이언트 어플리케이션에서 토스\n페이먼츠의 결제 창을 이용하여 진행한 결제가 바로 확정되는 것은 아니다. 귀사의 백엔드\n서버가 현재의 `payments.at` 을 통하여 해당 결제 정보를 확인하고, {@link approve } 를\n호출하여 직접 승인하기 전까지, 해당 결제는 확정되지 않으니, 이 점에 유의하기 바란다.", - "x-nestia-namespace": "v1.payments.at", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "paymentKey", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "결제 정보의 ", - "kind": "text" - }, - { - "text": "{@link ", - "kind": "link" - }, - { - "text": "ITossPayment.paymentKey", - "kind": "linkName", - "target": { - "fileName": "C:/github/samchon/fake-toss-payments-server/src/api/structures/ITossPayment.ts", - "textSpan": { - "start": 2480, - "length": 19 - } - } - }, - { - "text": "}", - "kind": "link" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "결제 정보", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "GET" + "description": "결제 정보 조회하기.\n\n`payments.at` 은 결제 정보를 조회하는 함수이다.\n\n주로 클라이언트 어플리케이션이 토스 페이먼츠가 자체적으로 제공하는 결제 창을 사용하는\n경우, 그래서 프론트 어플리케이션이 귀하의 백엔드 서버에 `paymentKey` 등 극히 일부의\n식별자 정보만을 전달해주어, 상세 결제 정보가 필요할 때 사용한다.\n\n참고로 토스 페이먼츠는 다른 결제 PG 사들과 다르게, 클라이언트 어플리케이션에서 토스\n페이먼츠의 결제 창을 이용하여 진행한 결제가 바로 확정되는 것은 아니다. 귀사의 백엔드\n서버가 현재의 `payments.at` 을 통하여 해당 결제 정보를 확인하고, {@link approve} 를\n호출하여 직접 승인하기 전까지, 해당 결제는 확정되지 않으니, 이 점에 유의하기 바란다." }, "post": { "tags": [], @@ -843,8 +326,8 @@ "schema": { "type": "string" }, - "description": "대상 결제의 ", - "required": true + "required": true, + "description": " 대상 결제의 {@link ITossPayment.paymentKey}" } ], "requestBody": { @@ -856,8 +339,7 @@ } } }, - "required": true, - "x-nestia-encrypted": false + "required": true }, "responses": { "201": { @@ -868,101 +350,16 @@ "$ref": "#/components/schemas/ITossPayment" } } - }, - "x-nestia-encrypted": false + } } }, "summary": "결제 승인하기", - "description": "결제 승인하기.\n\n토스 페이먼츠는 귀사의 백엔드에서 일어난 결제가 아닌 프론트 어플리케이션의 결제 창에서\n이루어진 결제의 경우, 해당 서비스으 백엔드 서버로부터 결제를 승인받기 전까지, 이를\n확정하지 않는다. `payments.approve` 는 바로 이러한 상황에서, 해당 결제를 승인해주는\n함수이다.\n\n만일 귀하가 `fake-toss-payments-server` 를 이용하여 결제를 시뮬레이션하는 경우라면,\n결제 관련 API 를 호출함에 있어 {@link ITossCardPayment.IStore.__approved } 내지\n{@link ITossVirtualAccountPayment.IStore.__approved } 를 `false` 로 함으로써, 별도\n승인이 필요한 이러한 상황을 시뮬레이션 할 수 있다.", + "description": "결제 승인하기.\n\n토스 페이먼츠는 귀사의 백엔드에서 일어난 결제가 아닌 프론트 어플리케이션의 결제 창에서\n이루어진 결제의 경우, 해당 서비스으 백엔드 서버로부터 결제를 승인받기 전까지, 이를\n확정하지 않는다. `payments.approve` 는 바로 이러한 상황에서, 해당 결제를 승인해주는\n함수이다.\n\n만일 귀하가 `fake-toss-payments-server` 를 이용하여 결제를 시뮬레이션하는 경우라면,\n결제 관련 API 를 호출함에 있어 {@link ITossCardPayment.ICreate.__approved} 내지\n{@link ITossVirtualAccountPayment.ICreate.__approved} 를 `false` 로 함으로써, 별도\n승인이 필요한 이러한 상황을 시뮬레이션 할 수 있다.", "security": [ { "basic": [] } - ], - "x-nestia-namespace": "v1.payments.approve", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "paymentKey", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "대상 결제의 ", - "kind": "text" - }, - { - "text": "{@link ", - "kind": "link" - }, - { - "text": "ITossPayment.paymentKey", - "kind": "linkName", - "target": { - "fileName": "C:/github/samchon/fake-toss-payments-server/src/api/structures/ITossPayment.ts", - "textSpan": { - "start": 2480, - "length": 19 - } - } - }, - { - "text": "}", - "kind": "link" - } - ] - }, - { - "name": "param", - "text": [ - { - "text": "input", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "주문 정보 확인", - "kind": "text" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "승인된 결제 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "basic", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "POST" + ] } }, "/v1/payments/key-in": { @@ -974,12 +371,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ITossCardPayment.IStore" + "$ref": "#/components/schemas/ITossCardPayment.ICreate" } } }, - "required": true, - "x-nestia-encrypted": false + "required": true }, "responses": { "201": { @@ -990,65 +386,16 @@ "$ref": "#/components/schemas/ITossCardPayment" } } - }, - "x-nestia-encrypted": false + } } }, "summary": "카드로 결제하기", - "description": "카드로 결제하기.\n\n`payments.key_in` 은 카드를 이용한 결제를 할 때 호출되는 API 함수이다.\n\n참고로 `payments.key_in` 는 클라이언트 어플리케이션이 토스 페이먼츠가 자체적으로\n제공하는 결제 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는\n일은 없을 것이다. 다만, 고객이 카드를 통하여 결제하는 상황을 시뮬레이션하기 위하여,\n테스트 자동화 프로그램 수준에서 사용될 수는 있다.\n\n그리고 귀하의 백엔드 서버가 `payments.key-in` 을 직접 호출하는 경우, 토스 페이먼츠\n서버는 이를 완전히 승인된 결제로 보고 바로 확정한다. 때문에 `payments.key-in` 을\n직접 호출하는 경우, 토스 페이먼츠의 결제 창을 이용하여 별도의 {@link approve } 가\n필요한 때 대비, 훨씬 더 세심한 주의가 요구된다.\n\n더하여 만약 귀하의 백엔드 서버가 `fake-toss-payments-server` 를 이용하여 고객의\n카드 결제를 시뮬레이션하는 경우, {@link ITossCardPayment.IStore.__approved } 값을\n`false` 로 하여 카드 결제의 확정을 고의로 회피할 수 있다. 이를 통하여 토스\n페이먼츠의 결제 창을 이용한 카드 결제의 경우, 별도의 {@link approve } 가 필요한\n상황을 시뮬레이션 할 수 있다.", + "description": "카드로 결제하기.\n\n`payments.key_in` 은 카드를 이용한 결제를 할 때 호출되는 API 함수이다.\n\n참고로 `payments.key_in` 는 클라이언트 어플리케이션이 토스 페이먼츠가 자체적으로\n제공하는 결제 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는\n일은 없을 것이다. 다만, 고객이 카드를 통하여 결제하는 상황을 시뮬레이션하기 위하여,\n테스트 자동화 프로그램 수준에서 사용될 수는 있다.\n\n그리고 귀하의 백엔드 서버가 `payments.key-in` 을 직접 호출하는 경우, 토스 페이먼츠\n서버는 이를 완전히 승인된 결제로 보고 바로 확정한다. 때문에 `payments.key-in` 을\n직접 호출하는 경우, 토스 페이먼츠의 결제 창을 이용하여 별도의 {@link approve} 가\n필요한 때 대비, 훨씬 더 세심한 주의가 요구된다.\n\n더하여 만약 귀하의 백엔드 서버가 `fake-toss-payments-server` 를 이용하여 고객의\n카드 결제를 시뮬레이션하는 경우, {@link ITossCardPayment.ICreate.__approved} 값을\n`false` 로 하여 카드 결제의 확정을 고의로 회피할 수 있다. 이를 통하여 토스\n페이먼츠의 결제 창을 이용한 카드 결제의 경우, 별도의 {@link approve} 가 필요한\n상황을 시뮬레이션 할 수 있다.", "security": [ { "basic": [] } - ], - "x-nestia-namespace": "v1.payments.key-in.key_in", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "input", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "카드 결제 입력 정보", - "kind": "text" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "카드 결제 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "basic", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "POST" + ] } }, "/v1/payments/{paymentKey}/cancel": { @@ -1061,8 +408,8 @@ "schema": { "type": "string" }, - "description": "결제 정보의 ", - "required": true + "required": true, + "description": " 결제 정보의 {@link ITossPayment.paymentKey}" } ], "requestBody": { @@ -1070,12 +417,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ITossPaymentCancel.IStore" + "$ref": "#/components/schemas/ITossPaymentCancel.ICreate" } } }, - "required": true, - "x-nestia-encrypted": false + "required": true }, "responses": { "201": { @@ -1086,101 +432,16 @@ "$ref": "#/components/schemas/ITossPayment" } } - }, - "x-nestia-encrypted": false + } } }, "summary": "결제 취소하기", - "description": "결제 취소하기.\n\n`payments.cancel` 은 결제를 취소하는 API 이다.\n\n결제 취소 입력 정보 {@link ITossPaymentCancel.IStore } 에는 취소 사유를 비롯하여,\n고객에게 환불해 줄 금액과 부가세 및 필요시 환불 계좌 정보 등을 입력하게 되어있다.", + "description": "결제 취소하기.\n\n`payments.cancel` 은 결제를 취소하는 API 이다.\n\n결제 취소 입력 정보 {@link ITossPaymentCancel.ICreate} 에는 취소 사유를 비롯하여,\n고객에게 환불해 줄 금액과 부가세 및 필요시 환불 계좌 정보 등을 입력하게 되어있다.", "security": [ { "basic": [] } - ], - "x-nestia-namespace": "v1.payments.cancel.cancel", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "paymentKey", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "결제 정보의 ", - "kind": "text" - }, - { - "text": "{@link ", - "kind": "link" - }, - { - "text": "ITossPayment.paymentKey", - "kind": "linkName", - "target": { - "fileName": "C:/github/samchon/fake-toss-payments-server/src/api/structures/ITossPayment.ts", - "textSpan": { - "start": 2480, - "length": 19 - } - } - }, - { - "text": "}", - "kind": "link" - } - ] - }, - { - "name": "param", - "text": [ - { - "text": "input", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "취소 입력 정보", - "kind": "text" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "취소된 결제 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "basic", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ], - "x-nestia-method": "POST" + ] } }, "/v1/virtual-accounts": { @@ -1192,12 +453,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ITossVirtualAccountPayment.IStore" + "$ref": "#/components/schemas/ITossVirtualAccountPayment.ICreate" } } }, - "required": true, - "x-nestia-encrypted": false + "required": true }, "responses": { "201": { @@ -1208,131 +468,97 @@ "$ref": "#/components/schemas/ITossVirtualAccountPayment" } } - }, - "x-nestia-encrypted": false - } - }, - "summary": "가상 계좌로 결제 신청하기", - "description": "가상 계좌로 결제 신청하기.\n\n`virtual_accounts.store` 는 고객이 결제 수단을 가상 계좌로 선택하는 경우에 호출되는\nAPI 함수이다. 물론 고객이 이처럼 가상 계좌를 선택한 경우, 고객이 지정된 계좌에 돈을\n입금하기 전까지는 결제가 마무리된 것이 아니기에, {@link ITossPayment.status } 값은\n`WAITING_FOR_DEPOSIT` 이 된다.\n\n참고로 `virtual_accounts.store` 는 클라이언트 어플리케이션이 토스 페이먼츠가\n자체적으로 제공하는 결제 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서\n호출하는 일은 없을 것이다. 다만, 고객이 가상 계좌로 결제를 진행하는 상황을\n시뮬레이션하기 위하여, 테스트 자동화 프로그램 수준에서 사용될 수는 있다.\n\n그리고 `virtual_accounts.store` 이후에 고객이 지정된 계좌에 금액을 입금하거든, 토스\n페이먼츠 서버로부터 웹훅 이벤트가 발생되어 귀하의 백엔드 서버로 전송된다. 만약 연동\n대상 토스 페이먼츠 서버가 실제가 아닌 `fake-toss-payments-server` 라면,\n{@link internal.virtual_accounts.deposit } 를 호출하여, 고객이 가상 계좌에 입금하는\n상황을 시뮬레이션 할 수 있다.", - "security": [ - { - "basic": [] - } - ], - "x-nestia-namespace": "v1.virtual-accounts.store", - "x-nestia-jsDocTags": [ - { - "name": "param", - "text": [ - { - "text": "input", - "kind": "parameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "가상 결제 신청 정보.", - "kind": "text" - } - ] - }, - { - "name": "returns", - "text": [ - { - "text": "가상 계좌 결제 정보", - "kind": "text" - } - ] - }, - { - "name": "security", - "text": [ - { - "text": "basic", - "kind": "text" - } - ] - }, - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] + } } - ], - "x-nestia-method": "POST" + }, + "summary": "가상 계좌로 결제 신청하기", + "description": "가상 계좌로 결제 신청하기.\n\n`virtual_accounts.create` 는 고객이 결제 수단을 가상 계좌로 선택하는 경우에 호출되는\nAPI 함수이다. 물론 고객이 이처럼 가상 계좌를 선택한 경우, 고객이 지정된 계좌에 돈을\n입금하기 전까지는 결제가 마무리된 것이 아니기에, {@link ITossPayment.status} 값은\n`WAITING_FOR_DEPOSIT` 이 된다.\n\n참고로 `virtual_accounts.create` 는 클라이언트 어플리케이션이 토스 페이먼츠가\n자체적으로 제공하는 결제 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서\n호출하는 일은 없을 것이다. 다만, 고객이 가상 계좌로 결제를 진행하는 상황을\n시뮬레이션하기 위하여, 테스트 자동화 프로그램 수준에서 사용될 수는 있다.\n\n그리고 `virtual_accounts.create` 이후에 고객이 지정된 계좌에 금액을 입금하거든, 토스\n페이먼츠 서버로부터 웹훅 이벤트가 발생되어 귀하의 백엔드 서버로 전송된다. 만약 연동\n대상 토스 페이먼츠 서버가 실제가 아닌 `fake-toss-payments-server` 라면,\n{@link internal.virtual_accounts.deposit} 를 호출하여, 고객이 가상 계좌에 입금하는\n상황을 시뮬레이션 할 수 있다.", + "security": [ + { + "basic": [] + } + ] } } }, "components": { "schemas": { - "ITossBilling.IStore": { + "ITossBilling.ICreate": { "type": "object", "properties": { "cardNumber": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "pattern": "[0-9]{16}" + "pattern": "[0-9]{16}", + "title": "카드 번호", + "description": "카드 번호." }, "cardExpirationYear": { - "description": "카드 만료 년도 (2 자리).", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "pattern": "\\d{2}" + "pattern": "\\d{2}", + "title": "카드 만료 년도 (2 자리)", + "description": "카드 만료 년도 (2 자리)." }, "cardExpirationMonth": { - "description": "카드 만료 월 (2 자리).", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "pattern": "^(0[1-9]|1[012])$" + "pattern": "^(0[1-9]|1[012])$", + "title": "카드 만료 월 (2 자리)", + "description": "카드 만료 월 (2 자리)." }, "cardPassword": { - "description": "카드 비밀번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "카드 비밀번호", + "description": "카드 비밀번호." }, "customerBirthday": { - "description": "고객의 생년월일.\n\n표기 형식 YYMMDD.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "pattern": "^([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$" + "pattern": "^([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$", + "title": "고객의 생년월일", + "description": "고객의 생년월일.\n\n표기 형식 YYMMDD." }, "consumerName": { - "description": "고객의 이름.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "type": "string", + "title": "고객의 이름", + "description": "고객의 이름." }, "customerEmail": { - "description": "고객의 이메일.", - "x-typia-required": false, - "x-typia-optional": true, "type": "string", - "format": "email" + "format": "email", + "title": "고객의 이메일", + "description": "고객의 이메일." }, "vbv": { - "$ref": "#/components/schemas/__type" + "type": "object", + "properties": { + "cavv": { + "type": "string", + "title": "3D Secure 인증 세션에 대한 인증 값", + "description": "3D Secure 인증 세션에 대한 인증 값." + }, + "xid": { + "type": "string", + "title": "트랜잭션 ID", + "description": "트랜잭션 ID." + }, + "eci": { + "type": "string", + "title": "3DS 인증 결과에 대한 코드 값", + "description": "3DS 인증 결과에 대한 코드 값." + } + }, + "required": [ + "cavv", + "xid", + "eci" + ], + "title": "해외카드로 결제하는 경우 3DS 인증 적용을 위해 사용", + "description": "해외카드로 결제하는 경우 3DS 인증 적용을 위해 사용.\n\n3DS 인증 결과를 전송해야 하는 경우에만 필수." }, "customerKey": { - "description": "고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "고객 식별자 키", + "description": "고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키." } }, - "nullable": false, "required": [ "cardNumber", "cardExpirationYear", @@ -1341,91 +567,49 @@ "customerBirthday", "customerKey" ], - "description": "간편 결제 카드 등록 정보.", - "x-typia-jsDocTags": [] - }, - "__type": { - "type": "object", - "properties": { - "cavv": { - "description": "3D Secure 인증 세션에 대한 인증 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "xid": { - "description": "트랜잭션 ID.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "eci": { - "description": "3DS 인증 결과에 대한 코드 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": false, - "required": [ - "cavv", - "xid", - "eci" - ], - "x-typia-jsDocTags": [] + "description": "간편 결제 카드 등록 정보." }, "ITossBilling": { "type": "object", "properties": { "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "가맹점 ID", + "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임." }, "billingKey": { - "description": "{@link ITossBilling } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "{@link ITossBilling} 의 식별자 키", + "description": "{@link ITossBilling} 의 식별자 키." }, "method": { - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "카드" - ] + "const": "카드", + "title": "결제 수단", + "description": "결제 수단." }, "cardCompany": { - "description": "카드사 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "카드사 이름", + "description": "카드사 이름." }, "cardNumber": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "pattern": "[0-9]{16}" + "pattern": "[0-9]{16}", + "title": "카드 번호", + "description": "카드 번호." }, "authenticatedAt": { - "description": "인증 일시.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "format": "date-time" + "format": "date-time", + "title": "인증 일시", + "description": "인증 일시." }, "customerKey": { - "description": "고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "고객 식별자 키", + "description": "고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키." } }, - "nullable": false, "required": [ "mId", "billingKey", @@ -1435,74 +619,51 @@ "authenticatedAt", "customerKey" ], - "description": "간편 결제 등록 수단 정보.\n\n`ITossBilling` 은 간편 결제 등록 수단을 형상화한 자료구조 인터페이스로써, 고객이 자신의\n신용 카드를 서버에 등록해두고, 매번 결제가 필요할 때마다 카드 정보를 반복 입려하는 일\n없이 간편하게 결제를 진행하고자 할 때 사용한다.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] + "description": "간편 결제 등록 수단 정보.\n\n`ITossBilling` 은 간편 결제 등록 수단을 형상화한 자료구조 인터페이스로써, 고객이 자신의\n신용 카드를 서버에 등록해두고, 매번 결제가 필요할 때마다 카드 정보를 반복 입려하는 일\n없이 간편하게 결제를 진행하고자 할 때 사용한다." }, "ITossBilling.ICustomerKey": { "type": "object", "properties": { "customerKey": { - "description": "고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "고객 식별자 키", + "description": "고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키." } }, - "nullable": false, "required": [ "customerKey" ], - "description": "고객 식별자 정보.", - "x-typia-jsDocTags": [] + "description": "고객 식별자 정보." }, "ITossBilling.IPaymentStore": { "type": "object", "properties": { "method": { - "description": "결제 수단이 간편 결제임을 의미함.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "billing" - ] + "const": "billing", + "title": "결제 수단이 간편 결제임을 의미함", + "description": "결제 수단이 간편 결제임을 의미함." }, "billingKey": { - "description": "{@link IPaymentStore } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "{@link IPaymentStore} 의 식별자 키", + "description": "{@link IPaymentStore} 의 식별자 키." }, "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 식별자 키", + "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키." }, "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 총액", + "description": "결제 총액." }, "customerKey": { - "description": "고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "고객 식별자 키", + "description": "고객 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키." } }, - "nullable": false, "required": [ "method", "billingKey", @@ -1510,8 +671,7 @@ "amount", "customerKey" ], - "description": "간편 결제를 이용한 결제 신청 정보.", - "x-typia-jsDocTags": [] + "description": "간편 결제를 이용한 결제 신청 정보." }, "ITossPayment": { "oneOf": [ @@ -1531,189 +691,210 @@ "$ref": "#/components/schemas/ITossVirtualAccountPayment" } ], - "description": "결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의 \n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] + "description": "결제 정보.\n\n`ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로\n지정된다.\n\n```typescript\nif (payment.method === \"카드\")\n payment.card; // payment be ITossCardPayment\n```" }, "ITossCardPayment": { "type": "object", "properties": { "card": { - "$ref": "#/components/schemas/ITossCardPayment.ICard" + "$ref": "#/components/schemas/ITossCardPayment.ICard", + "title": "카드 정보", + "description": "카드 정보." }, "discount": { - "$ref": "#/components/schemas/ITossCardPayment.IDiscount.Nullable" + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/ITossCardPayment.IDiscount" + } + ], + "title": "카드사의 즉시 할인 프로모션 정보", + "description": "카드사의 즉시 할인 프로모션 정보." }, "easyPay": { - "description": "간편결제로 결제한 경우 간편결제 타입 정보.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "토스결제", - "페이코", - "삼성페이" + "oneOf": [ + { + "type": "null" + }, + { + "const": "토스결제" + }, + { + "const": "페이코" + }, + { + "const": "삼성페이" + } ], - "nullable": true + "title": "간편결제로 결제한 경우 간편결제 타입 정보", + "description": "간편결제로 결제한 경우 간편결제 타입 정보." }, "method": { - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "카드" - ] + "const": "카드", + "title": "결제 수단", + "description": "결제 수단." }, "type": { - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "NORMAL", - "BILLING" - ] + "oneOf": [ + { + "const": "NORMAL" + }, + { + "const": "BILLING" + } + ], + "title": "결제 타입", + "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제." }, "status": { - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ] + "oneOf": [ + { + "const": "READY" + }, + { + "const": "IN_PROGRESS" + }, + { + "const": "WAITING_FOR_DEPOSIT" + }, + { + "const": "DONE" + }, + { + "const": "CANCELED" + }, + { + "const": "PARTIAL_CANCELED" + }, + { + "const": "ABORTED" + }, + { + "const": "EXPIRED" + } + ], + "title": "결제 상태", + "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED" }, "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "가맹점 ID", + "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임." }, "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "사용 중인 토스 페이먼츠 API 의 버전", + "description": "사용 중인 토스 페이먼츠 API 의 버전." }, "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "결제 내역의 식별자 번호", + "description": "결제 내역의 식별자 번호." }, "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 식별자 키", + "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키." }, "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "거래 건에 대한 고유한 키 값", + "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라." }, "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 이름", + "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명." }, "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "화폐 단위", + "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능." }, "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "총 결제 금액", + "description": "총 결제 금액." }, "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "취소할 수 있는 금액", + "description": "취소할 수 있는 금액." }, "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "공급가액", + "description": "공급가액." }, "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "면세액", + "description": "면세액." }, "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "부가세", + "description": "부가세." }, "useEscrow": { - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "boolean" + "type": "boolean", + "title": "에스크로 사용 여부", + "description": "에스크로 사용 여부." }, "cultureExpense": { - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "boolean" + "type": "boolean", + "title": "문화비 지출 여부", + "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등." }, "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "format": "date-time" + "format": "date-time", + "title": "결제 요청 일시", + "description": "결제 요청 일시." }, "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "format": "date-time" + } + ], + "title": "결제 승인 일시", + "description": "결제 승인 일시." }, "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "$ref": "#/components/schemas/ITossPaymentCancel" - }, - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ITossPaymentCancel" + } + } + ], + "title": "결제 취소 내역", + "description": "결제 취소 내역." }, "cashReceipt": { - "$ref": "#/components/schemas/ITossCashReceipt.ISummary.Nullable" + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/ITossCashReceipt.ISummary" + } + ], + "title": "현금 영수증 정보", + "description": "현금 영수증 정보." } }, - "nullable": false, "required": [ "card", "discount", @@ -1740,105 +921,97 @@ "cancels", "cashReceipt" ], - "description": "카드 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] + "description": "카드 결제 정보." }, "ITossCardPayment.ICard": { "type": "object", "properties": { "company": { - "description": "카드사 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "카드사 이름", + "description": "카드사 이름." }, "number": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "pattern": "[0-9]{16}" + "pattern": "[0-9]{16}", + "title": "카드 번호", + "description": "카드 번호." }, "installmentPlanMonths": { - "description": "할부 개월 수.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "할부 개월 수", + "description": "할부 개월 수." }, "isInterestFree": { - "description": "무이자 할부 적용 여부.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "boolean" + "type": "boolean", + "title": "무이자 할부 적용 여부", + "description": "무이자 할부 적용 여부." }, "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "승인 번호", + "description": "승인 번호." }, "useCardPoint": { - "description": "카드 포인트 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "boolean", - "enum": [ - false - ] + "const": false, + "title": "카드 포인트 사용 여부", + "description": "카드 포인트 사용 여부." }, "cardType": { - "description": "카드 타입.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "신용", - "체크", - "기프트" - ] + "oneOf": [ + { + "const": "신용" + }, + { + "const": "체크" + }, + { + "const": "기프트" + } + ], + "title": "카드 타입", + "description": "카드 타입." }, "ownerType": { - "description": "카드의 소유자 타입.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "개인", - "법인" - ] + "oneOf": [ + { + "const": "개인" + }, + { + "const": "법인" + } + ], + "title": "카드의 소유자 타입", + "description": "카드의 소유자 타입." }, "acquireStatus": { - "description": "카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "READY", - "CANCELED", - "REQUESTED", - "COMPLETED", - "CANCEL_REQUESTED" - ] + "oneOf": [ + { + "const": "READY" + }, + { + "const": "CANCELED" + }, + { + "const": "REQUESTED" + }, + { + "const": "COMPLETED" + }, + { + "const": "CANCEL_REQUESTED" + } + ], + "title": "카드 결제의 매입 상태", + "description": "카드 결제의 매입 상태.\n\n - READY: 매입 대기\n - REQUESTED: 매입 요청됨\n - COMPLETED: 매입 완료\n - CANCEL_REQUESTED: 매입 취소 요청됨\n - CANCELD: 매입 취소됨" }, "receiptUrl": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "format": "url" + "format": "uri", + "title": "영수증 URL", + "description": "영수증 URL." } }, - "nullable": false, "required": [ "company", "number", @@ -1851,68 +1024,57 @@ "acquireStatus", "receiptUrl" ], - "description": "카드 정보.", - "x-typia-jsDocTags": [] + "description": "카드 정보." }, - "ITossCardPayment.IDiscount.Nullable": { + "ITossCardPayment.IDiscount": { "type": "object", "properties": { "amount": { - "description": "카드사의 즉시 할인 프로모션을 적용한 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "카드사의 즉시 할인 프로모션을 적용한 금액", + "description": "카드사의 즉시 할인 프로모션을 적용한 금액." } }, - "nullable": true, "required": [ "amount" ], - "description": "카드사의 즉시 할인 프로모션 정보.", - "x-typia-jsDocTags": [] + "description": "카드사의 즉시 할인 프로모션 정보." }, "ITossPaymentCancel": { "type": "object", "properties": { "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "취소 총액", + "description": "취소 총액." }, "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "취소 사유", + "description": "취소 사유." }, "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "면세 처리된 금액", + "description": "면세 처리된 금액." }, "taxAmount": { - "description": "과세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "과세 처리된 금액", + "description": "과세 처리된 금액." }, "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 취소 후 환불 가능 잔액", + "description": "결제 취소 후 환불 가능 잔액." }, "canceledAt": { - "description": "취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "format": "date-time" + "format": "date-time", + "title": "취소 일시", + "description": "취소 일시." } }, - "nullable": false, "required": [ "cancelAmount", "cancelReason", @@ -1921,51 +1083,37 @@ "refundableAmount", "canceledAt" ], - "description": "결제 취소 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] + "description": "결제 취소 정보." }, - "ITossCashReceipt.ISummary.Nullable": { + "ITossCashReceipt.ISummary": { "type": "object", "properties": { "type": { - "$ref": "#/components/schemas/ITossCashReceipt.Type" + "$ref": "#/components/schemas/ITossCashReceipt.Type", + "title": "현금 영수증의 종류", + "description": "현금 영수증의 종류." }, "amount": { - "description": "현금 영수증 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "현금 영수증 처리된 금액", + "description": "현금 영수증 처리된 금액." }, "taxFreeAmount": { - "description": "면세 처리된 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "면세 처리된 금액", + "description": "면세 처리된 금액." }, "issueNumber": { - "description": "현금영수증 발급번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "현금영수증 발급번호", + "description": "현금영수증 발급번호." }, "receiptUrl": { - "description": "현금영수증 조회 페이지 주소.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "현금영수증 조회 페이지 주소", + "description": "현금영수증 조회 페이지 주소." } }, - "nullable": true, "required": [ "type", "amount", @@ -1973,171 +1121,184 @@ "issueNumber", "receiptUrl" ], - "description": "현금 영수증 요약 정보.", - "x-typia-jsDocTags": [] + "description": "현금 영수증 요약 정보." }, "ITossCashReceipt.Type": { - "description": "현금 영수증의 종류.", - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ] + "oneOf": [ + { + "const": "소득공제" + }, + { + "const": "지출증빙" + } + ], + "description": "현금 영수증의 종류." }, "ITossGiftCertificatePayment": { "type": "object", "properties": { "giftCertificate": { - "$ref": "#/components/schemas/ITossGiftCertificatePayment.IGiftCertificate" + "$ref": "#/components/schemas/ITossGiftCertificatePayment.IGiftCertificate", + "title": "상품권 정보", + "description": "상품권 정보." }, "method": { - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "상품권" - ] + "const": "상품권", + "title": "결제 수단", + "description": "결제 수단." }, "type": { - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "NORMAL" - ] + "const": "NORMAL", + "title": "결제 타입", + "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제." }, "status": { - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ] + "oneOf": [ + { + "const": "READY" + }, + { + "const": "IN_PROGRESS" + }, + { + "const": "WAITING_FOR_DEPOSIT" + }, + { + "const": "DONE" + }, + { + "const": "CANCELED" + }, + { + "const": "PARTIAL_CANCELED" + }, + { + "const": "ABORTED" + }, + { + "const": "EXPIRED" + } + ], + "title": "결제 상태", + "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED" }, "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "가맹점 ID", + "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임." }, "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "사용 중인 토스 페이먼츠 API 의 버전", + "description": "사용 중인 토스 페이먼츠 API 의 버전." }, "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "결제 내역의 식별자 번호", + "description": "결제 내역의 식별자 번호." }, "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 식별자 키", + "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키." }, "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "거래 건에 대한 고유한 키 값", + "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라." }, "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 이름", + "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명." }, "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "화폐 단위", + "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능." }, "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "총 결제 금액", + "description": "총 결제 금액." }, "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "취소할 수 있는 금액", + "description": "취소할 수 있는 금액." }, "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "공급가액", + "description": "공급가액." }, "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "면세액", + "description": "면세액." }, "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "부가세", + "description": "부가세." }, "useEscrow": { - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "boolean" + "type": "boolean", + "title": "에스크로 사용 여부", + "description": "에스크로 사용 여부." }, "cultureExpense": { - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "boolean" + "type": "boolean", + "title": "문화비 지출 여부", + "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등." }, "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "format": "date-time" + "format": "date-time", + "title": "결제 요청 일시", + "description": "결제 요청 일시." }, "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "format": "date-time" + } + ], + "title": "결제 승인 일시", + "description": "결제 승인 일시." }, "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "$ref": "#/components/schemas/ITossPaymentCancel" - }, - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ITossPaymentCancel" + } + } + ], + "title": "결제 취소 내역", + "description": "결제 취소 내역." }, "cashReceipt": { - "$ref": "#/components/schemas/ITossCashReceipt.ISummary.Nullable" + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/ITossCashReceipt.ISummary" + } + ], + "title": "현금 영수증 정보", + "description": "현금 영수증 정보." } }, - "nullable": false, "required": [ "giftCertificate", "method", @@ -2162,201 +1323,200 @@ "cancels", "cashReceipt" ], - "description": "상품권 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] + "description": "상품권 결제 정보." }, "ITossGiftCertificatePayment.IGiftCertificate": { "type": "object", "properties": { "approveNo": { - "description": "승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "승인 번호", + "description": "승인 번호." }, "settlementStatus": { - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "COMPLETE", - "INCOMPLETE" - ] + "oneOf": [ + { + "const": "COMPLETE" + }, + { + "const": "INCOMPLETE" + } + ], + "title": "정산 상태", + "description": "정산 상태." } }, - "nullable": false, "required": [ "approveNo", "settlementStatus" ], - "description": "상품권 정보.", - "x-typia-jsDocTags": [] + "description": "상품권 정보." }, "ITossMobilePhonePayment": { "type": "object", "properties": { "mobilePhone": { - "$ref": "#/components/schemas/ITossMobilePhonePayment.IMobilePhone" + "$ref": "#/components/schemas/ITossMobilePhonePayment.IMobilePhone", + "title": "휴대폰 정보", + "description": "휴대폰 정보." }, "method": { - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "휴대폰" - ] + "const": "휴대폰", + "title": "결제 수단", + "description": "결제 수단." }, "type": { - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "NORMAL" - ] + "const": "NORMAL", + "title": "결제 타입", + "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제." }, "status": { - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ] + "oneOf": [ + { + "const": "READY" + }, + { + "const": "IN_PROGRESS" + }, + { + "const": "WAITING_FOR_DEPOSIT" + }, + { + "const": "DONE" + }, + { + "const": "CANCELED" + }, + { + "const": "PARTIAL_CANCELED" + }, + { + "const": "ABORTED" + }, + { + "const": "EXPIRED" + } + ], + "title": "결제 상태", + "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED" }, "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "가맹점 ID", + "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임." }, "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "사용 중인 토스 페이먼츠 API 의 버전", + "description": "사용 중인 토스 페이먼츠 API 의 버전." }, "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "결제 내역의 식별자 번호", + "description": "결제 내역의 식별자 번호." }, "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 식별자 키", + "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키." }, "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "거래 건에 대한 고유한 키 값", + "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라." }, "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 이름", + "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명." }, "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "화폐 단위", + "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능." }, "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "총 결제 금액", + "description": "총 결제 금액." }, "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "취소할 수 있는 금액", + "description": "취소할 수 있는 금액." }, "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "공급가액", + "description": "공급가액." }, "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "면세액", + "description": "면세액." }, "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "부가세", + "description": "부가세." }, "useEscrow": { - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "boolean" + "type": "boolean", + "title": "에스크로 사용 여부", + "description": "에스크로 사용 여부." }, "cultureExpense": { - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "boolean" + "type": "boolean", + "title": "문화비 지출 여부", + "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등." }, "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "format": "date-time" + "format": "date-time", + "title": "결제 요청 일시", + "description": "결제 요청 일시." }, "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "format": "date-time" + } + ], + "title": "결제 승인 일시", + "description": "결제 승인 일시." }, "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "$ref": "#/components/schemas/ITossPaymentCancel" - }, - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ITossPaymentCancel" + } + } + ], + "title": "결제 취소 내역", + "description": "결제 취소 내역." }, "cashReceipt": { - "$ref": "#/components/schemas/ITossCashReceipt.ISummary.Nullable" + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/ITossCashReceipt.ISummary" + } + ], + "title": "현금 영수증 정보", + "description": "현금 영수증 정보." } }, - "nullable": false, "required": [ "mobilePhone", "method", @@ -2381,208 +1541,206 @@ "cancels", "cashReceipt" ], - "description": "휴대폰 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] + "description": "휴대폰 결제 정보." }, "ITossMobilePhonePayment.IMobilePhone": { "type": "object", "properties": { "carrier": { - "description": "통신사.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "통신사", + "description": "통신사." }, "customerMobilePhone": { - "description": "고객 휴대폰 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "고객 휴대폰 번호", + "description": "고객 휴대폰 번호." }, "settlementStatus": { - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ] + "oneOf": [ + { + "const": "COMPLETED" + }, + { + "const": "INCOMPLETED" + } + ], + "title": "정산 상태", + "description": "정산 상태." } }, - "nullable": false, "required": [ "carrier", "customerMobilePhone", "settlementStatus" ], - "description": "휴대폰 정보.", - "x-typia-jsDocTags": [] + "description": "휴대폰 정보." }, "ITossTransferPayment": { "type": "object", "properties": { "transfer": { - "$ref": "#/components/schemas/ITossTransferPayment.ITransfer" + "$ref": "#/components/schemas/ITossTransferPayment.ITransfer", + "title": "계좌 이체 정보", + "description": "계좌 이체 정보." }, "method": { - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "계좌이체" - ] + "const": "계좌이체", + "title": "결제 수단", + "description": "결제 수단." }, "type": { - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "NORMAL" - ] + "const": "NORMAL", + "title": "결제 타입", + "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제." }, "status": { - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ] + "oneOf": [ + { + "const": "READY" + }, + { + "const": "IN_PROGRESS" + }, + { + "const": "WAITING_FOR_DEPOSIT" + }, + { + "const": "DONE" + }, + { + "const": "CANCELED" + }, + { + "const": "PARTIAL_CANCELED" + }, + { + "const": "ABORTED" + }, + { + "const": "EXPIRED" + } + ], + "title": "결제 상태", + "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED" }, "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "가맹점 ID", + "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임." }, "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "사용 중인 토스 페이먼츠 API 의 버전", + "description": "사용 중인 토스 페이먼츠 API 의 버전." }, "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "결제 내역의 식별자 번호", + "description": "결제 내역의 식별자 번호." }, "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 식별자 키", + "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키." }, "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "거래 건에 대한 고유한 키 값", + "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라." }, "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 이름", + "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명." }, "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "화폐 단위", + "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능." }, "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "총 결제 금액", + "description": "총 결제 금액." }, "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "취소할 수 있는 금액", + "description": "취소할 수 있는 금액." }, "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "공급가액", + "description": "공급가액." }, "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "면세액", + "description": "면세액." }, "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "부가세", + "description": "부가세." }, "useEscrow": { - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "boolean" + "type": "boolean", + "title": "에스크로 사용 여부", + "description": "에스크로 사용 여부." }, "cultureExpense": { - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "boolean" + "type": "boolean", + "title": "문화비 지출 여부", + "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등." }, "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "format": "date-time" + "format": "date-time", + "title": "결제 요청 일시", + "description": "결제 요청 일시." }, "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "format": "date-time" + } + ], + "title": "결제 승인 일시", + "description": "결제 승인 일시." }, "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "$ref": "#/components/schemas/ITossPaymentCancel" - }, - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ITossPaymentCancel" + } + } + ], + "title": "결제 취소 내역", + "description": "결제 취소 내역." }, "cashReceipt": { - "$ref": "#/components/schemas/ITossCashReceipt.ISummary.Nullable" + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/ITossCashReceipt.ISummary" + } + ], + "title": "현금 영수증 정보", + "description": "현금 영수증 정보." } }, - "nullable": false, "required": [ "transfer", "method", @@ -2607,207 +1765,205 @@ "cancels", "cashReceipt" ], - "description": "계좌 이체 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] + "description": "계좌 이체 결제 정보." }, "ITossTransferPayment.ITransfer": { "type": "object", "properties": { "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "은행명", + "description": "은행명." }, "settlementStatus": { - "description": "이체 상태.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ] + "oneOf": [ + { + "const": "COMPLETED" + }, + { + "const": "INCOMPLETED" + } + ], + "title": "이체 상태", + "description": "이체 상태." } }, - "nullable": false, "required": [ "bank", "settlementStatus" ], - "description": "계좌 이체 정보.", - "x-typia-jsDocTags": [] + "description": "계좌 이체 정보." }, "ITossVirtualAccountPayment": { "type": "object", "properties": { "secret": { - "description": "가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값", + "description": "가상 계좌로 결제할 때 전달되는 입금 콜백을 검증하기 위한 값." }, "virtualAccount": { - "$ref": "#/components/schemas/ITossVirtualAccountPayment.IVirtualAccount" + "$ref": "#/components/schemas/ITossVirtualAccountPayment.IVirtualAccount", + "title": "가상 계좌 정보", + "description": "가상 계좌 정보." }, "method": { - "description": "결제 수단.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "가상계좌" - ] + "const": "가상계좌", + "title": "결제 수단", + "description": "결제 수단." }, "type": { - "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "NORMAL" - ] + "const": "NORMAL", + "title": "결제 타입", + "description": "결제 타입.\n\n - NORMAL: 일반 결제\n - BILLING: 미리 등록한 카드에 의한 간편 결제." }, "status": { - "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "READY", - "IN_PROGRESS", - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED", - "ABORTED", - "EXPIRED" - ] + "oneOf": [ + { + "const": "READY" + }, + { + "const": "IN_PROGRESS" + }, + { + "const": "WAITING_FOR_DEPOSIT" + }, + { + "const": "DONE" + }, + { + "const": "CANCELED" + }, + { + "const": "PARTIAL_CANCELED" + }, + { + "const": "ABORTED" + }, + { + "const": "EXPIRED" + } + ], + "title": "결제 상태", + "description": "결제 상태.\n\n - READY\n - IN_PROGRESS\n - WAITING_FOR_DEPOSIT\n - DONE\n - CANCELED\n - PARTIAL_CANCELED\n - ABORTED\n - EXPIRED" }, "mId": { - "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "가맹점 ID", + "description": "가맹점 ID.\n\n현재 tosspayments 가 쓰임." }, "version": { - "description": "사용 중인 토스 페이먼츠 API 의 버전.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "사용 중인 토스 페이먼츠 API 의 버전", + "description": "사용 중인 토스 페이먼츠 API 의 버전." }, "paymentKey": { - "description": "결제 내역의 식별자 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "결제 내역의 식별자 번호", + "description": "결제 내역의 식별자 번호." }, "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 식별자 키", + "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키." }, "transactionKey": { - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "거래 건에 대한 고유한 키 값", + "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라." }, "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 이름", + "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명." }, "currency": { - "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "화폐 단위", + "description": "화폐 단위.\n\n현재 토스 페이먼츠는 KRW 만 사용 가능." }, "totalAmount": { - "description": "총 결제 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "총 결제 금액", + "description": "총 결제 금액." }, "balanceAmount": { - "description": "취소할 수 있는 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "취소할 수 있는 금액", + "description": "취소할 수 있는 금액." }, "suppliedAmount": { - "description": "공급가액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "공급가액", + "description": "공급가액." }, "taxFreeAmount": { - "description": "면세액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "면세액", + "description": "면세액." }, "vat": { - "description": "부가세.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "부가세", + "description": "부가세." }, "useEscrow": { - "description": "에스크로 사용 여부.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "boolean" + "type": "boolean", + "title": "에스크로 사용 여부", + "description": "에스크로 사용 여부." }, "cultureExpense": { - "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "boolean" + "type": "boolean", + "title": "문화비 지출 여부", + "description": "문화비 지출 여부.\n\n도석입, 공연 티켓, 박물관/미술관 입장권 등." }, "requestedAt": { - "description": "결제 요청 일시.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "format": "date-time" + "format": "date-time", + "title": "결제 요청 일시", + "description": "결제 요청 일시." }, "approvedAt": { - "description": "결제 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "format": "date-time" + } + ], + "title": "결제 승인 일시", + "description": "결제 승인 일시." }, "cancels": { - "description": "결제 취소 내역.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "array", - "items": { - "$ref": "#/components/schemas/ITossPaymentCancel" - }, - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ITossPaymentCancel" + } + } + ], + "title": "결제 취소 내역", + "description": "결제 취소 내역." }, "cashReceipt": { - "$ref": "#/components/schemas/ITossCashReceipt.ISummary.Nullable" + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/ITossCashReceipt.ISummary" + } + ], + "title": "현금 영수증 정보", + "description": "현금 영수증 정보." } }, - "nullable": false, "required": [ "secret", "virtualAccount", @@ -2833,88 +1989,83 @@ "cancels", "cashReceipt" ], - "description": "가상 계좌 결제 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] + "description": "가상 계좌 결제 정보." }, "ITossVirtualAccountPayment.IVirtualAccount": { "type": "object", "properties": { "accountNumber": { - "description": "계좌 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "계좌 번호", + "description": "계좌 번호." }, "accountType": { - "description": "가상 계좌 타입.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "일반", - "고정" - ] + "oneOf": [ + { + "const": "일반" + }, + { + "const": "고정" + } + ], + "title": "가상 계좌 타입", + "description": "가상 계좌 타입." }, "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "은행명", + "description": "은행명." }, "customerName": { - "description": "고객 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "고객 이름", + "description": "고객 이름." }, "dueDate": { - "description": "입금 기한.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "format": "date" + "format": "date", + "title": "입금 기한", + "description": "입금 기한." }, "expired": { - "description": "가상 계좌 만료 여부.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "boolean" + "type": "boolean", + "title": "가상 계좌 만료 여부", + "description": "가상 계좌 만료 여부." }, "settlementStatus": { - "description": "정산 상태.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "COMPLETED", - "INCOMPLETED" - ] + "oneOf": [ + { + "const": "COMPLETED" + }, + { + "const": "INCOMPLETED" + } + ], + "title": "정산 상태", + "description": "정산 상태." }, "refundStatus": { - "description": "환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "COMPLETED", - "NONE", - "FAILED", - "PENDING", - "PARTIAL_FAILED" - ] + "oneOf": [ + { + "const": "COMPLETED" + }, + { + "const": "NONE" + }, + { + "const": "FAILED" + }, + { + "const": "PENDING" + }, + { + "const": "PARTIAL_FAILED" + } + ], + "title": "환불 처리 상태", + "description": "환불 처리 상태.\n\n - NONE: 해당 없음\n - FAILED: 환불 실패\n - PENDING: 환불 처리중\n - PARTIAL_FAILED: 부분 환불 실패\n - COMPLETED: 환불 완료" } }, - "nullable": false, "required": [ "accountNumber", "accountType", @@ -2925,66 +2076,59 @@ "settlementStatus", "refundStatus" ], - "description": "가상 계좌 정보.", - "x-typia-jsDocTags": [] + "description": "가상 계좌 정보." }, - "ITossCashReceipt.IStore": { + "ITossCashReceipt.ICreate": { "type": "object", "properties": { "type": { - "description": "현금 영수증의 종류.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "소득공제", - "지출증빙" - ] + "oneOf": [ + { + "const": "소득공제" + }, + { + "const": "지출증빙" + } + ], + "title": "현금 영수증의 종류", + "description": "현금 영수증의 종류." }, "paymentKey": { - "description": "귀속 결제의 {@link ITossPayment.paymentKey }.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "귀속 결제의 {@link ITossPayment.paymentKey}", + "description": "귀속 결제의 {@link ITossPayment.paymentKey}." }, "orderId": { - "description": "주문의 식별자 ID.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문의 식별자 ID", + "description": "주문의 식별자 ID." }, "orderName": { - "description": "주문 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 이름", + "description": "주문 이름." }, "registrationNumber": { - "description": "현금 영수증 발급을 위한 개인 식별 번호.\n\n현금 영수증의 종류에 따라 휴대폰 번호나 주민등록번호 또는 사업자등록번호 및 \n카드 번호를 입력할 수 있다.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "현금 영수증 발급을 위한 개인 식별 번호", + "description": "현금 영수증 발급을 위한 개인 식별 번호.\n\n현금 영수증의 종류에 따라 휴대폰 번호나 주민등록번호 또는 사업자등록번호 및\n카드 번호를 입력할 수 있다." }, "amount": { - "description": "현금 영수증을 발행할 금액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "현금 영수증을 발행할 금액", + "description": "현금 영수증을 발행할 금액." }, "taxFreeAmount": { - "description": "면세 금액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" + "type": "number", + "title": "면세 금액", + "description": "면세 금액." }, "businessNumber": { - "description": "사업자 등록번호.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "type": "string", + "title": "사업자 등록번호", + "description": "사업자 등록번호." } }, - "nullable": false, "required": [ "type", "paymentKey", @@ -2993,62 +2137,61 @@ "registrationNumber", "amount" ], - "description": "현금 영수증 입력 정보.", - "x-typia-jsDocTags": [] + "description": "현금 영수증 입력 정보." }, "ITossCashReceipt": { "type": "object", "properties": { "receiptKey": { - "description": "현금 영수증의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "현금 영수증의 식별자 키", + "description": "현금 영수증의 식별자 키." }, "type": { - "$ref": "#/components/schemas/ITossCashReceipt.Type" + "$ref": "#/components/schemas/ITossCashReceipt.Type", + "title": "현금 영수증의 종류", + "description": "현금 영수증의 종류." }, "orderId": { - "description": "주문의 식별자 ID.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문의 식별자 ID", + "description": "주문의 식별자 ID." }, "orderName": { - "description": "주문 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 이름", + "description": "주문 이름." }, "approvalNumber": { - "description": "현금 영수증 승인 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "현금 영수증 승인 번호", + "description": "현금 영수증 승인 번호." }, "approvedAt": { - "description": "현금 영수증 승인 일시.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "format": "date-time" + "format": "date-time", + "title": "현금 영수증 승인 일시", + "description": "현금 영수증 승인 일시." }, "canceledAt": { - "description": "현금 영수증 취소 일시.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "format": "date-time", - "nullable": true + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "format": "date-time" + } + ], + "title": "현금 영수증 취소 일시", + "description": "현금 영수증 취소 일시." }, "receiptUrl": { - "description": "영수증 URL.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "영수증 URL", + "description": "영수증 URL." } }, - "nullable": false, "required": [ "receiptKey", "type", @@ -3059,198 +2202,179 @@ "canceledAt", "receiptUrl" ], - "description": "현금 영수증 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] + "description": "현금 영수증 정보." }, "ITossCashReceipt.ICancel": { "type": "object", "properties": { "amount": { - "description": "취소 금액.\n\n미 입력시 현금 영수증에 기재된 {@link ITossCashReceipt.amount 총액}이 취소됨.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" + "type": "number", + "title": "취소 금액", + "description": "취소 금액.\n\n미 입력시 현금 영수증에 기재된 {@link ITossCashReceipt.amount 총액}이 취소됨." } }, - "nullable": false, - "description": "현금 영수증 취소 입력 정보.", - "x-typia-jsDocTags": [] + "description": "현금 영수증 취소 입력 정보." }, "ITossPaymentWebhook": { "type": "object", "properties": { "eventType": { - "description": "이벤트 타입.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "PAYMENT_STATUS_CHANGED" - ] + "const": "PAYMENT_STATUS_CHANGED", + "title": "이벤트 타입", + "description": "이벤트 타입." }, "data": { - "$ref": "#/components/schemas/ITossPaymentWebhook.IData" + "$ref": "#/components/schemas/ITossPaymentWebhook.IData", + "title": "이벤트 데이터", + "description": "이벤트 데이터." } }, - "nullable": false, "required": [ "eventType", "data" ], - "description": "웹훅 이벤트 정보.", - "x-typia-jsDocTags": [ - { - "name": "author", - "text": [ - { - "text": "Jeongho Nam - https://github.com/samchon", - "kind": "text" - } - ] - } - ] + "description": "웹훅 이벤트 정보." }, "ITossPaymentWebhook.IData": { "type": "object", "properties": { "paymentKey": { - "description": "{@link ITossPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "{@link ITossPayment} 의 식별자 키", + "description": "{@link ITossPayment} 의 식별자 키." }, "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 식별자 키", + "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키." }, "status": { - "description": "결제 상태.\n\n - DONE: 결제 완료\n - CANCELED: 결제가 취소됨\n - PARTIAL_CANCELED: 결제가 부분 취소됨\n - WAITING_FOR_DEPOSIT: 입금 대기 중", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "WAITING_FOR_DEPOSIT", - "DONE", - "CANCELED", - "PARTIAL_CANCELED" - ] + "oneOf": [ + { + "const": "WAITING_FOR_DEPOSIT" + }, + { + "const": "DONE" + }, + { + "const": "CANCELED" + }, + { + "const": "PARTIAL_CANCELED" + } + ], + "title": "결제 상태", + "description": "결제 상태.\n\n - DONE: 결제 완료\n - CANCELED: 결제가 취소됨\n - PARTIAL_CANCELED: 결제가 부분 취소됨\n - WAITING_FOR_DEPOSIT: 입금 대기 중" } }, - "nullable": false, "required": [ "paymentKey", "orderId", "status" ], - "description": "웹훅 이벤트 데이터.", - "x-typia-jsDocTags": [] + "description": "웹훅 이벤트 데이터." }, - "ITossCardPayment.IStore": { + "ITossCardPayment.ICreate": { "type": "object", "properties": { "method": { - "description": "결제 수단이 신용 카드임을 의미.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "card" - ] + "const": "card", + "title": "결제 수단이 신용 카드임을 의미", + "description": "결제 수단이 신용 카드임을 의미." }, "cardNumber": { - "description": "카드 번호.", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "pattern": "[0-9]{16}" + "pattern": "[0-9]{16}", + "title": "카드 번호", + "description": "카드 번호." }, "cardExpirationYear": { - "description": "카드 만료 년도 (2 자리).", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "pattern": "\\d{2}" + "pattern": "\\d{2}", + "title": "카드 만료 년도 (2 자리)", + "description": "카드 만료 년도 (2 자리)." }, "cardExpirationMonth": { - "description": "카드 만료 월 (2 자리).", - "x-typia-required": true, - "x-typia-optional": false, "type": "string", - "pattern": "^(0[1-9]|1[012])$" + "pattern": "^(0[1-9]|1[012])$", + "title": "카드 만료 월 (2 자리)", + "description": "카드 만료 월 (2 자리)." }, "cardPassword": { - "description": "카드 비밀번호.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "type": "string", + "title": "카드 비밀번호", + "description": "카드 비밀번호." }, "cardInstallmentPlan": { - "description": "할부 개월 수.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" + "type": "number", + "title": "할부 개월 수", + "description": "할부 개월 수." }, "amount": { - "description": "지불 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "지불 총액", + "description": "지불 총액." }, "taxFreeAmount": { - "description": "면세금 총액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" + "type": "number", + "title": "면세금 총액", + "description": "면세금 총액." }, "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 식별자 키", + "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키." }, "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "string" + "type": "string", + "title": "주문 이름", + "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명." }, "customerBirthday": { - "description": "고객의 생년월일.\n\n표기 형식 YYMMDD.", - "x-typia-required": false, - "x-typia-optional": true, "type": "string", - "pattern": "^([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$" + "pattern": "^([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$", + "title": "고객의 생년월일", + "description": "고객의 생년월일.\n\n표기 형식 YYMMDD." }, "customerEmail": { - "description": "고객의 이메일.", - "x-typia-required": false, - "x-typia-optional": true, "type": "string", - "format": "email" + "format": "email", + "title": "고객의 이메일", + "description": "고객의 이메일." }, "vbv": { - "$ref": "#/components/schemas/__type.o1" + "type": "object", + "properties": { + "cavv": { + "type": "string", + "title": "3D Secure 인증 세션에 대한 인증 값", + "description": "3D Secure 인증 세션에 대한 인증 값." + }, + "xid": { + "type": "string", + "title": "트랜잭션 ID", + "description": "트랜잭션 ID." + }, + "eci": { + "type": "string", + "title": "3DS 인증 결과에 대한 코드 값", + "description": "3DS 인증 결과에 대한 코드 값." + } + }, + "required": [ + "cavv", + "xid", + "eci" + ], + "title": "해외카드로 결제하는 경우 3DS 인증 적용을 위해 사용", + "description": "해외카드로 결제하는 경우 3DS 인증 적용을 위해 사용.\n\n3DS 인증 결과를 전송해야 하는 경우에만 필수." }, "__approved": { - "description": "결제 승인 여부.\n\n오직 가짜 페이먼츠 서버 `fake-toss-payments-server` 에서만 사용되는 값으로써, \n결제 승인을 고의로 지연시키거나 할 때 사용된다. 이 값을 `false` 로 하면, 프론트 \n어플리케이션이 토스 페이먼츠가 제공해주는 결제 창을 사용하여 결제를 진행하는 \n상황을 시뮬레이션할 수 있다.\n\n본디 토스 페이먼츠 서버는 프론트 어플리케이션에서 백엔드 서버를 거치지 않고,\n토스 페이먼츠가 제공해주는 결제 창을 이용하여 직접 결제를 요청하는 경우, \n백엔드에서 이를 별도 {@link functional.payments.approve 승인} 처리해주기 전까지 \n정식 결제로 인청치 아니한다.\n\n반면 백엔드 서버에서 토스 페이먼츠 서버의 API 를 호출하는 경우, 토스 페이먼츠는\n이를 그 즉시로 승인해주기, `fake-toss-payments-server` 에서 별도의 승인 처리가\n필요한 상황을 시뮬레이션하기 위해서는 이러한 속성이 필요한 것.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "boolean" + "type": "boolean", + "title": "결제 승인 여부", + "description": "결제 승인 여부.\n\n오직 가짜 페이먼츠 서버 `fake-toss-payments-server` 에서만 사용되는 값으로써,\n결제 승인을 고의로 지연시키거나 할 때 사용된다. 이 값을 `false` 로 하면, 프론트\n어플리케이션이 토스 페이먼츠가 제공해주는 결제 창을 사용하여 결제를 진행하는\n상황을 시뮬레이션할 수 있다.\n\n본디 토스 페이먼츠 서버는 프론트 어플리케이션에서 백엔드 서버를 거치지 않고,\n토스 페이먼츠가 제공해주는 결제 창을 이용하여 직접 결제를 요청하는 경우,\n백엔드에서 이를 별도 {@link functional.payments.approve 승인} 처리해주기 전까지\n정식 결제로 인청치 아니한다.\n\n반면 백엔드 서버에서 토스 페이먼츠 서버의 API 를 호출하는 경우, 토스 페이먼츠는\n이를 그 즉시로 승인해주기, `fake-toss-payments-server` 에서 별도의 승인 처리가\n필요한 상황을 시뮬레이션하기 위해서는 이러한 속성이 필요한 것." } }, - "nullable": false, "required": [ "method", "cardNumber", @@ -3259,195 +2383,135 @@ "amount", "orderId" ], - "description": "신용 카드를 이용한 결제 신청 정보.", - "x-typia-jsDocTags": [] - }, - "__type.o1": { - "type": "object", - "properties": { - "cavv": { - "description": "3D Secure 인증 세션에 대한 인증 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "xid": { - "description": "트랜잭션 ID.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "eci": { - "description": "3DS 인증 결과에 대한 코드 값.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": false, - "required": [ - "cavv", - "xid", - "eci" - ], - "x-typia-jsDocTags": [] + "description": "신용 카드를 이용한 결제 신청 정보." }, "ITossPayment.IApproval": { "type": "object", "properties": { "orderId": { - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 식별자 키", + "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키." }, "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 총액", + "description": "결제 총액." } }, - "nullable": false, "required": [ "orderId", "amount" ], - "description": "결제 승인 정보.", - "x-typia-jsDocTags": [] + "description": "결제 승인 정보." }, - "ITossPaymentCancel.IStore": { + "ITossPaymentCancel.ICreate": { "type": "object", "properties": { "paymentKey": { - "description": "{@link ITossPayment } 의 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "{@link ITossPayment} 의 식별자 키", + "description": "{@link ITossPayment} 의 식별자 키." }, "cancelReason": { - "description": "취소 사유.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "취소 사유", + "description": "취소 사유." }, "cancelAmount": { - "description": "취소 총액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" + "type": "number", + "title": "취소 총액", + "description": "취소 총액." }, "refundReceiveAccount": { - "$ref": "#/components/schemas/__type.o2" + "type": "object", + "properties": { + "bank": { + "type": "string", + "title": "은행 정보", + "description": "은행 정보." + }, + "accountNumber": { + "type": "string", + "pattern": "^[0-9]{0,20}$", + "title": "계좌 번호", + "description": "계좌 번호." + }, + "holderName": { + "type": "string", + "title": "예금주", + "description": "예금주." + } + }, + "required": [ + "bank", + "accountNumber", + "holderName" + ], + "title": "환불 계좌 정보", + "description": "환불 계좌 정보.\n\n결제를 가상 계좌로 하였을 때에만 해당함." }, "taxAmount": { - "description": "과세 처리 금액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" + "type": "number", + "title": "과세 처리 금액", + "description": "과세 처리 금액." }, "taxFreeAmount": { - "description": "면세 처리 금액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" + "type": "number", + "title": "면세 처리 금액", + "description": "면세 처리 금액." }, "refundableAmount": { - "description": "결제 취소 후 환불 가능 잔액.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "number" + "type": "number", + "title": "결제 취소 후 환불 가능 잔액", + "description": "결제 취소 후 환불 가능 잔액." } }, - "nullable": false, "required": [ "paymentKey", "cancelReason" ], - "description": "결제 취소 신청 정보.", - "x-typia-jsDocTags": [] - }, - "__type.o2": { - "type": "object", - "properties": { - "bank": { - "description": "은행 정보.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - }, - "accountNumber": { - "description": "계좌 번호.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "pattern": "^[0-9]{0,20}$" - }, - "holderName": { - "description": "예금주.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" - } - }, - "nullable": false, - "required": [ - "bank", - "accountNumber", - "holderName" - ], - "x-typia-jsDocTags": [] + "description": "결제 취소 신청 정보." }, - "ITossVirtualAccountPayment.IStore": { + "ITossVirtualAccountPayment.ICreate": { "type": "object", "properties": { "method": { - "description": "결제 수단이 가상 계좌임을 의미.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string", - "enum": [ - "virtual-account" - ] + "const": "virtual-account", + "title": "결제 수단이 가상 계좌임을 의미", + "description": "결제 수단이 가상 계좌임을 의미." }, "orderId": { - "description": "주문 식별자 번호.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 식별자 번호", + "description": "주문 식별자 번호.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키." }, "orderName": { - "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "주문 이름", + "description": "주문 이름.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명." }, "bank": { - "description": "은행명.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "은행명", + "description": "은행명." }, "customerName": { - "description": "고객 이름.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "string" + "type": "string", + "title": "고객 이름", + "description": "고객 이름." }, "amount": { - "description": "결제 총액.", - "x-typia-required": true, - "x-typia-optional": false, - "type": "number" + "type": "number", + "title": "결제 총액", + "description": "결제 총액." }, "__approved": { - "description": "결제 승인 여부.\n\n오직 가짜 페이먼츠 서버 `fake-toss-payments-server` 에서만 사용되는 값으로써, \n결제 승인을 고의로 지연시키거나 할 때 사용된다. 이 값을 `false` 로 하면, 프론트 \n어플리케이션이 토스 페이먼츠가 제공해주는 결제 창을 사용하여 결제를 진행하는 \n상황을 시뮬레이션할 수 있다.\n\n본디 토스 페이먼츠 서버는 프론트 어플리케이션에서 백엔드 서버를 거치지 않고,\n토스 페이먼츠가 제공해주는 결제 창을 이용하여 직접 결제를 요청하는 경우, \n백엔드에서 이를 별도 {@link functional.payments.approve 승인} 처리해주기 전까지 \n정식 결제로 인청치 아니한다.\n\n반면 백엔드 서버에서 토스 페이먼츠 서버의 API 를 호출하는 경우, 토스 페이먼츠는\n이를 그 즉시로 승인해주기, `fake-toss-payments-server` 에서 별도의 승인 처리가\n필요한 상황을 시뮬레이션하기 위해서는 이러한 속성이 필요한 것.", - "x-typia-required": false, - "x-typia-optional": true, - "type": "boolean" + "type": "boolean", + "title": "결제 승인 여부", + "description": "결제 승인 여부.\n\n오직 가짜 페이먼츠 서버 `fake-toss-payments-server` 에서만 사용되는 값으로써,\n결제 승인을 고의로 지연시키거나 할 때 사용된다. 이 값을 `false` 로 하면, 프론트\n어플리케이션이 토스 페이먼츠가 제공해주는 결제 창을 사용하여 결제를 진행하는\n상황을 시뮬레이션할 수 있다.\n\n본디 토스 페이먼츠 서버는 프론트 어플리케이션에서 백엔드 서버를 거치지 않고,\n토스 페이먼츠가 제공해주는 결제 창을 이용하여 직접 결제를 요청하는 경우,\n백엔드에서 이를 별도 {@link functional.payments.approve 승인} 처리해주기 전까지\n정식 결제로 인청치 아니한다.\n\n반면 백엔드 서버에서 토스 페이먼츠 서버의 API 를 호출하는 경우, 토스 페이먼츠는\n이를 그 즉시로 승인해주기, `fake-toss-payments-server` 에서 별도의 승인 처리가\n필요한 상황을 시뮬레이션하기 위해서는 이러한 속성이 필요한 것." } }, - "nullable": false, "required": [ "method", "orderId", @@ -3456,8 +2520,7 @@ "customerName", "amount" ], - "description": "가상 계좌를 이용한 결제 신청 정보.", - "x-typia-jsDocTags": [] + "description": "가상 계좌를 이용한 결제 신청 정보." } }, "securitySchemes": { @@ -3467,5 +2530,7 @@ "in": "header" } } - } + }, + "tags": [], + "x-samchon-emended": true } \ No newline at end of file diff --git a/test/example.ts b/test/example.ts new file mode 100644 index 0000000..9d4afd7 --- /dev/null +++ b/test/example.ts @@ -0,0 +1,28 @@ +import { OpenApi } from "@samchon/openapi"; +import { ISwagger, OpenAiComposer } from "@wrtnio/openai-function-schema"; +import fs from "fs"; + +const main = async (): Promise => { + const directory: string[] = await fs.promises.readdir("examples/swagger"); + for (const file of directory) { + const swagger: ISwagger = OpenApi.convert( + JSON.parse( + await fs.promises.readFile(`examples/swagger/${file}`, "utf8"), + ), + ); + for (const keyword of [false, true]) + await fs.promises.writeFile( + `examples/${keyword ? "keyword" : "positional"}/${file}`, + JSON.stringify( + OpenAiComposer.document({ + swagger, + options: { + keyword, + }, + }), + ), + "utf8", + ); + } +}; +main().catch(console.error);